gpt4 book ai didi

javascript - 根据父元素类型格式化json

转载 作者:行者123 更新时间:2023-11-29 18:38:51 25 4
gpt4 key购买 nike

我有一个 JSON,我需要所有不同于类型 1 的人都在类型 1 的下方成为类型 1 的 child

也就是说,如果它不同于 1 并且刚好低于类型 1,则此值必须成为类型 1 的嵌套对象

例子

array = [
{
name: 'name1',
type: 1
},
{
name: 'name2',
type: 2
},
{
name: 'name3',
type: 3
},
{
name: 'name4',
type: 1
},
{
name: 'name5',
type: 2
},
]

数组应该变成下面这个样子。

arrayFormated = [
{
name: 'name1',
type: 1
child: [
{
name: 'name2',
type: 2
},
{
name: 'name3',
type: 3
}
]
},

{
name: 'name4',
type: 1,
child: [{
name: 'name5',
type: 2
}]
},
]

我尝试使用 map

  this.formatedArray = array.map((x, index) => {
if (x.type !== 1) {
return {
name: x.name
type: x.type
}
}

最佳答案

您可以使用 for 循环来迭代数组,如果一个项目的 type1,您可以将它分配给 父级

然后继续将其他元素附加到children 数组,直到再次遇到type1 的项。然后将子项作为 child 属性添加到 parent 对象并将结果推送到新数组。

let array = [{ name: 'name1', type: 1 }, { name: 'name2', type: 2 }, { name: 'name3', type: 3 }, { name: 'name4', type: 1 }, { name: 'name5', type: 2 }, ];

let result = [];
let parent = null;
let children = [];

for (let i = 0; i < array.length; i++) {
if (array[i].type === 1) {
if (parent) {
parent.child = children;
result.push(Object.assign(parent));
children = [];
}
parent = Object.assign(array[i]);
continue;
}

children.push(Object.assign(array[i]));
}

if (parent) {
parent.child = children;
result.push(Object.assign(parent));
}

console.log(result);

关于javascript - 根据父元素类型格式化json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58651517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com