2 回答

TA貢獻1784條經驗 獲得超7個贊
您可以使用for循環(huán)對數(shù)組進行迭代,如果項目的typeis 1,則可以將其分配給parent。
然后繼續(xù)向children數(shù)組追加其他元素,直到再次遇到帶有typeof的項目1。然后將子項作為child屬性添加到parent對象并將結果推送到新數(shù)組。
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個贊
為此,您可以使用各種方法。例如,最詳細的是使用循環(huán)(不確定它是否真的有效,沒有運行它,請視為偽代碼):
const result = [];
let parent;
array.forEach(element => {
if (element.type === 1) {
parent = element;
parent.children = [];
result.push(element);
return;
}
parent.children.push(element);
})
我最擔心的是,您的問題聽起來像是您嘗試執(zhí)行的任務有問題。我不知道背景,因為你的帖子很抽象,但我懷疑你試圖解決一個可以用更簡單的方式解決的問題。
我們,程序員通常會修復出現(xiàn)在我們腦海中的第一個解決方案,并且如果該解決方案并不真正有效或脆弱,則猶豫退后并重新考慮整個問題以找到更合適的解決方案。
我希望我以任何方式提供幫助。
添加回答
舉報