遍历多维对象
Traverse through multi-dimentional object
我有一个多维对象:
var obj = {
prop: {
myVal: "blah",
otherVal: {
// lots of other properties
},
},
};
如何在不知道对象中 属性 个名称或 "dimensions" 个数的情况下遍历整个对象?
SO 上还有几个与主题相关的其他问题:
Traverse through Javascript object properties
javascript traversing through an object
问题是这两个答案都不是我想要的,因为:
a)第一个link只遍历对象中的第一层
b)第二个答案要求你知道对象键的名称。
递归:
function doSomethingWithAValue(obj, callback) {
Object.keys(obj).forEach(function(key) {
var val = obj[key];
if (typeof val !== 'object') {
callback(val);
} else {
doSomethingWithAValue(val, callback);
}
});
}
考虑使用 object-scan。一旦您全神贯注,它在数据处理方面就非常强大。以下是您如何在删除安全顺序中进行简单迭代:
// const objectScan = require('object-scan');
const obj = { prop: { myVal: 'blah', otherVal: { /* lots of other properties */ } } };
objectScan(['**'], {
filterFn: ({ key, value }) => {
console.log(key, value);
}
})(obj);
// => [ 'prop', 'otherVal' ] {}
// => [ 'prop', 'myVal' ] blah
// => [ 'prop' ] { myVal: 'blah', otherVal: {} }
.as-console-wrapper {max-height: 100% !important; top: 0}
<script src="https://bundle.run/object-scan@13.8.0"></script>
免责声明:我是object-scan
的作者
我有一个多维对象:
var obj = {
prop: {
myVal: "blah",
otherVal: {
// lots of other properties
},
},
};
如何在不知道对象中 属性 个名称或 "dimensions" 个数的情况下遍历整个对象?
SO 上还有几个与主题相关的其他问题:
Traverse through Javascript object properties
javascript traversing through an object
问题是这两个答案都不是我想要的,因为:
a)第一个link只遍历对象中的第一层
b)第二个答案要求你知道对象键的名称。
递归:
function doSomethingWithAValue(obj, callback) {
Object.keys(obj).forEach(function(key) {
var val = obj[key];
if (typeof val !== 'object') {
callback(val);
} else {
doSomethingWithAValue(val, callback);
}
});
}
考虑使用 object-scan。一旦您全神贯注,它在数据处理方面就非常强大。以下是您如何在删除安全顺序中进行简单迭代:
// const objectScan = require('object-scan');
const obj = { prop: { myVal: 'blah', otherVal: { /* lots of other properties */ } } };
objectScan(['**'], {
filterFn: ({ key, value }) => {
console.log(key, value);
}
})(obj);
// => [ 'prop', 'otherVal' ] {}
// => [ 'prop', 'myVal' ] blah
// => [ 'prop' ] { myVal: 'blah', otherVal: {} }
.as-console-wrapper {max-height: 100% !important; top: 0}
<script src="https://bundle.run/object-scan@13.8.0"></script>
免责声明:我是object-scan
的作者