【发布时间】:2021-09-18 00:46:57
【问题描述】:
我需要通过键值“groupName”找到相同的元素,并在新数组中的相同索引位置上创建一组,如果 groupName 为空,则将其保留在相同位置
例如:
const list = [
{
id: 1,
groupName: null
},
{
id: 2,
groupName: 'group_1'
},
{
id: 3,
groupName: 'group_1'
},
{
id: 4,
groupName: 'group_2'
},
{
id: 5,
groupName: 'group_2'
},
{
id: 6,
groupName: null
},
...
];
期待这样的事情:
const newList = [
{
id: 1,
groupName: null
},
[
{
id: 2,
groupName: 'group_1'
},
{
id: 3,
groupName: 'group_1'
}
],
[
{
id: 4,
groupName: 'group_2'
},
{
id: 5,
groupName: 'group_2'
}
],
{
id: 6,
groupName: null
},
];
我尝试为此使用 reduce,但无法在 newList 中保存相同的索引位置 这样做的最佳方法是什么?
【问题讨论】:
-
我认为您应该对项目进行分组,即使 groupName 为 null 以保持一致的数据结构。
-
输入没有按组排序怎么办?
-
“相同的索引位置”是什么意思?例如
{ id: 4, groupName: 'group_2' }的对象在list[3]和newList[2][0];两个数组的索引不一样。 -
@secan 是的,我明白你的意思。它应该看起来像示例中的样子,猜猜它提供的信息更多。我的意思是在循环期间,相等的对象应该包装在新数组中。但当然,索引会有所不同,谢谢通知。
-
@ikhvjs 是的,我认为你是绝对正确的。但它应该在一个循环列表中......并且位置很重要......也许我需要创建一个不同的结构但在一个范围内......
标签: javascript arrays duplicates type-conversion reduce