遍历多维对象

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

的作者