规范化深层嵌套对象

问题描述 投票:0回答:2

所以我有这个代表层次结构的对象。穿越它的最佳方式是什么?

例如,查找每个级别的朋友数量,添加特定深度的朋友。

{
  "name": "John",
  "Friends": [{
      "name": "Emily",
      "Friends": [{
          "name": "Sandra",
          "Friends": []
        },
        {
          "name": "Michael",
          "Friends": []
        }
      ]
    },
    {
      "name": "Sara",
      "Friends": [{
          "name": "James",
          "Friends": []
        },
        {
          "name": "Yara ",
          "Friends": []
        }
      ]
    }
  ]
}
javascript
2个回答
3
投票

这个函数应该足够了,这将使我们能够广泛地迭代,如果我们想要一些其他的条件语句,我们可以添加/删除对象 - :

function traverseObjectBreadthWise (obj) {
    for (var key in obj) {
        if (typeof obj[key] == "array" || typeof obj[key] == "object") {
            traverseObjectBreadthWise(obj[key]);
            console.log(key);
        } else {
            console.log(key, "=", obj[key]);
        }
    }
}

0
投票

我建议你使用lodash.Its如此有用。你可以使用计数,你可以找到每个级别的朋友的计数。我使用它喜欢递归,因为朋友级别可以更多。

  recusersiveFunc(arr){
    if(Object.keys(arr).includes("Friends")){
        console.log(_.countBy(arr.Friends,"name"));
        arr.Friends.forEach(x => {
          this.recusersiveFunc(x);
        });             
    }
  }

    this.recusersiveFunc(data);//data is your JSON object
© www.soinside.com 2019 - 2024. All rights reserved.