Javascript- Iterate over nested objects, getting values and chained keys [duplicate]

本秂侑毒 提交于 2019-12-13 18:04:23

问题


Having the object :

Nested1: {
    "nested21": {
        "nested31": {
            value: "im sooo nested"
        } ,
        "nested32": {
            value: "im sooo nested"
        }
    },
    "nested22": {
        "nested31": {
            value: "im sooo nested"
        } ,
        "nested32": {
            value: "im sooo nested"
        }
    }
}

Where there can be an undefined number of nested objects, i'd like to get something like:

Nested1.nested21.nested31 - im sooo nested
Nested1.nested21.nested32 - im sooo nested

And so on

I'm thinking of a recursive function but how to keep in memory the chained keys ?


回答1:


Got it

var obj, traverse;

obj = {
  a: {
    b: 1,
    c: 2
  },
  d: {
    e: 3,
    f: 4
  }
};

traverse = function(node, path) {
  var pairs;
  if (!(pairs = _(node).pairs()).length) {
    return [
      {
        keys: path,
        value: node
      }
    ];
  } else {
    return [].concat.apply([], _(pairs).map(function(kv) {
      return traverse(kv[1], path.concat(kv[0]));
    }));
  }
};

console.log(traverse(obj, []));


来源:https://stackoverflow.com/questions/17231118/javascript-iterate-over-nested-objects-getting-values-and-chained-keys

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!