gpt4 book ai didi

javascript - 使用 id 和 parentid 重新排列对象数组

转载 作者:行者123 更新时间:2023-12-05 05:12:17 26 4
gpt4 key购买 nike

我有两个数组。两者都包含具有唯一 id 和 parentid 值的对象(给定的 id 只是示例,实际上它们是由 uuid 生成器生成的)。第一个是按照 parentid 不同于“parent”的对象位于具有相应 id 的父对象之后的方式排序的:

const array1 = [
{ id: "id1", parentId: "parent" },
{ id: "id2", parentId: "id1" },
{ id: "id3", parentId: "id2" },
{ id: "id4", parentId: "id3" },
{ id: "id5", parentId: "id4" },
{ id: "id6", parentId: "parent" },
{ id: "id7", parentId: "id6" },
{ id: "id8", parentId: "id7" },
{ id: "id9", parentId: "parent" }
];

第二个按嵌套“深度”排序:

const array2 = [
{ id: "id1", parentId: "parent" },
{ id: "id6", parentId: "parent" },
{ id: "id9", parentId: "parent" },
{ id: "id2", parentId: "id1" },
{ id: "id7", parentId: "id6" },
{ id: "id3", parentId: "id2" },
{ id: "id8", parentId: "id7" },
{ id: "id4", parentId: "id3" },
{ id: "id5", parentId: "id4" },
];

将 array2 重新排列为 array1 顺序的最佳方法是什么?

最佳答案

您可以使用 Array.prototype.reduce() 函数来实现

const array2 = [
{ id: "id1", parentId: "parent" },
{ id: "id6", parentId: "parent" },
{ id: "id9", parentId: "parent" },
{ id: "id2", parentId: "id1" },
{ id: "id7", parentId: "id6" },
{ id: "id3", parentId: "id2" },
{ id: "id8", parentId: "id7" },
{ id: "id4", parentId: "id3" },
{ id: "id5", parentId: "id4" },
];

const sortedArray2= array2.reduce((accumulator, currentValue) => {
let item = accumulator.find(x => x.id === currentValue.parentId);
let index = accumulator.indexOf(item);
index = index !== -1 ? index + 1 : accumulator.length;
accumulator.splice(index, 0, currentValue);
return accumulator;
}, []);

console.log(sortedArray2);

关于javascript - 使用 id 和 parentid 重新排列对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54737100/

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