如何迭代JSON对象并使用Javascript中的层次结构级别动态添加键值对对象?

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

我希望迭代此JSON并为其级别添加一个键值对。

例如:

第一级层次结构应为0级,第二级层次应为1级,依此类推。

var json = [{
  "name": "parent 1",
  "children": [
    {
      "name": "child 1",
      "children": [
            {
            "name": "child 11"
            }
        ]
    },
    {
      "name": "child 2"
    }
  ]
}];

期望的json:

var json = [
{
  "name": "parent 1",
  "level": "0",
  "children": [
    {
      "name": "child 1",
      "level": "1",
      "children": [
            {
            "name": "child 11",
            "level": "2"
            }
        ]
    },
    {
      "name": "child 2",
      "level": "1"
    }
  ]
}];
javascript json key-value
3个回答
0
投票

我认为使用Array.protoype.map()可以达到所需的目标。

map()方法创建一个新数组,其中填充了在调用数组中每个元素上调用提供的函数的结果。

请为您的问题找到可能的解决方案:

Array.protoype.map()

我希望有帮助!


0
投票

您可以使用Lodash遍历对象和数组:

const data = [{"name": "parent 1","children": [{"name": "child 1","children": [{"name": "child 11"}]},{"name": "child 2"}]}]; const addLevel = (array, level) => { if (!level) { level = 0; } return array.map(e => { if (e.children) { e.children = addLevel(e.children, level + 1); } return { ...e, level }; }); }; const result = addLevel(data); console.log(result);


0
投票

for

https://lodash.com/docs/4.17.15#forEach

一个简单的解决方案是

var json = [{
  "name": "parent 1",
  "children": [
    {
      "name": "child 1",
      "children": [
            {
            "name": "child 11"
            }
        ]
    },
    {
      "name": "child 2"
    }
  ]
}];
© www.soinside.com 2019 - 2024. All rights reserved.