规范深层嵌套的对象

时间:2019-04-14 09:29:54

标签: javascript

所以我有一个代表层次结构的对象。什么 是最好的方法吗?

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

{
  "name": "John",
  "Friends": [{
      "name": "Emily",
      "Friends": [{
          "name": "Sandra",
          "Friends": []
        },
        {
          "name": "Michael",
          "Friends": []
        }
      ]
    },
    {
      "name": "Sara",
      "Friends": [{
          "name": "James",
          "Friends": []
        },
        {
          "name": "Yara ",
          "Friends": []
        }
      ]
    }
  ]
}

2 个答案:

答案 0 :(得分: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]);
        }
    }
}

答案 1 :(得分:0)

我建议您使用lodash。它非常有用。您可以使用count by,并且可以找到每个级别的朋友的计数。我喜欢它的递归方式,因为Friends级别可以更多。

  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