簡體   English   中英

遍歷多維對象

[英]Traverse through multi-dimentional object

我有一個多維對象:

var obj = {
    prop: {
        myVal: "blah",
        otherVal: {
             // lots of other properties
        },
    },
};

在不知道對象中的任何屬性名稱或“維度”數量的情況下,如何遍歷整個對象?

關於 SO 的其他幾個問題與該主題相關:

遍歷 Javascript 對象屬性
javascript遍歷一個對象

問題是這兩個答案都不是我想要的,因為:

a)第一個鏈接只遍歷對象中的第一層。
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>

免責聲明:我是對象掃描的作者

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM