首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历嵌套的javascript对象以标识空值属性

问遍历嵌套的javascript对象以标识空值属性
EN

Stack Overflow用户
提问于 2015-05-30 19:19:44
回答 2查看 1.8K关注 0票数 2

如果我有一个目标:

代码语言:javascript
复制
var dog= {
  name: "Max",
  age: 5,
  sex: undefined,
  details: {
    color: "black",
    breed: undefined
  }
}

我想用未定义的值获取属性的路径。我如何迭代所有属性,包括嵌套属性?

目前,对于没有嵌套属性的对象,我有一个普通的js方法:

代码语言:javascript
复制
function getUndefinedPaths(o, name) {
  var paths = [];
  for (var prop in o) {
    if (o[prop] === undefined) {
        paths += name + "." + prop + "\n";
    }
  }
  return paths;
}

// getUndefinedPaths(dog, "dog") only returns "dog.sex" and not "dog.details.breed" which is also undefined.

我卡住了。有人能帮忙如何在js对象的嵌套属性中获取这些未定义值的路径吗?我只想用香草javascript来做这个。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-30 19:37:17

您可以像这样使用递归函数:

代码语言:javascript
复制
function getPath(obj, path) {

    var props = [];    

    for(var key in obj) {

        if(obj[key] === undefined) {
            props.push(path + '.' + key);
        }

        if(obj[key] instanceof Object) {
            props.push.apply(props, getPath( obj[key], path + '.' + key ));
        }

    }

    return props;
}


var path = getPath(dog, 'dog');

这将返回路径的Array到undefined属性。

如果有必要,可以在结果“Array”上使用联接来获取String:

代码语言:javascript
复制
console.log(path.join('\n'));
票数 1
EN

Stack Overflow用户

发布于 2020-10-25 18:56:52

我们现在使用目标扫描进行这样的数据处理。每次都很难重新发明轮子。下面是它的工作原理

​

代码语言:javascript
复制
// const objectScan = require('object-scan');

const find = (data) => objectScan(['**'], {
  joined: true,
  filterFn: ({ value }) => value === undefined
})(data);

const dog = { name: 'Max', age: 5, sex: undefined, details: { color: 'black', breed: undefined } };

console.log(find(dog));
// => [ 'details.breed', 'sex' ]
代码语言:javascript
复制
.as-console-wrapper {max-height: 100% !important; top: 0}
代码语言:javascript
复制
<script src="https://bundle.run/object-scan@13.8.0"></script>

​

免责声明:我是目标扫描的作者

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30550376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档