2 回答
TA贡献1784条经验 获得超7个赞
您可以使用for循环对数组进行迭代,如果项目的typeis 1,则可以将其分配给parent。
然后继续向children数组追加其他元素,直到再次遇到带有typeof的项目1。然后将子项作为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);
TA贡献1851条经验 获得超4个赞
为此,您可以使用各种方法。例如,最详细的是使用循环(不确定它是否真的有效,没有运行它,请视为伪代码):
const result = [];
let parent;
array.forEach(element => {
if (element.type === 1) {
parent = element;
parent.children = [];
result.push(element);
return;
}
parent.children.push(element);
})
我最担心的是,您的问题听起来像是您尝试执行的任务有问题。我不知道背景,因为你的帖子很抽象,但我怀疑你试图解决一个可以用更简单的方式解决的问题。
我们,程序员通常会修复出现在我们脑海中的第一个解决方案,并且如果该解决方案并不真正有效或脆弱,则犹豫退后并重新考虑整个问题以找到更合适的解决方案。
我希望我以任何方式提供帮助。
添加回答
举报
