gpt4 book ai didi

javascript - 将对象数组分解为二维数组

转载 作者:行者123 更新时间:2023-12-04 08:22:56 25 4
gpt4 key购买 nike

我需要将一个对象数组分解成一个二维数组,其中一维数组将由对象组成,这些对象的属性“for”和“to”不重叠间隔。
例子:
给定数组 arr1 我希望收到 arr2

const arr1 = [
{
from: 0,
to: 2,
},
{
from: 0,
to: 6,
},
{
from: 3,
to: 7,
},
{
from: 2,
to: 4,
},
]

arr2 = [
[
{
from: 0,
to: 2,
},
{
from: 3,
to: 7,
}
],
[
{
from: 0,
to: 6,
}
],
[
{
from: 2,
to: 4,
}
],
]
它应该如何工作:
我们循环遍历 arr1。
默认情况下,Object1 应该放在 arr2 的第一个一维数组中。
Object2 与 Object1 重叠,因此应将其放入 arr2 中的单独数组中。
Object3 不与 Object1 重叠,因此它应该与 Object1 一起放入第一个一维数组
Object4 与Object1 重叠,因此应将其放入Object3 的第二个一维数组中,但它也与Object3 重叠,因此应放入单独的一维数组中。
我需要找到尽可能少循环的解决方案)

最佳答案

如果所有项目不重叠,您可以迭代结果数组并找到一个插槽。

const
array = [{ from: 0, to: 2 }, { from: 0, to: 6 }, { from: 3, to: 7 }, { from: 2, to: 4 }],
result = array.reduce((r, o) => {
if (!r) return [[o]];
const group = r.find(a => a.every(({ from, to }) => o.to <= from || to <= o.from));
if (group) group.push(o);
else r.push([o]);
return r;
}, undefined);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 将对象数组分解为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65412891/

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