【发布时间】:2020-04-07 09:03:28
【问题描述】:
我有这个数组
[[1,2,3],[4,1,6],[1,3,2],[1,2,4],[3,1,2],[4,6,1],[9,9,9]]
并且我想要一个执行此操作的函数:
[[1,2,3],[4,1,6],[1,2,4],[9,9,9]].
此函数删除所有具有相同值的子数组。
我想过这样的过滤器
.filter(el => el.filter(value => array2.includes(value)))
但我不认为它会起作用。
PS:我使用 node.js
编辑:奇怪的是,您的许多答案都适用于该示例,但不适用于我的真实程序......事实上,我使用的是对象而不是数字。像这样:[[obj,obj,obj],[obj,obj,obj],[obj,obj,obj]]。但我不知道为什么它适用于数字而不是对象......
EDIT2:我现在给出一个最小的例子,这个对象:
注意实际数组可以有 20,000 个项目
[
[
{ name: 'Dofawa', item_type: 'Dofus', level: 6 },
{
name: 'Dofus Cawotte',
item_type: 'Dofus',
level: 6
},
{
name: 'Dofus Kaliptus',
item_type: 'Dofus',
level: 6
}
],
[
{ name: 'Dofawa', item_type: 'Dofus', level: 6 },
{
name: 'Dofus Emeraude',
item_type: 'Dofus',
level: 6
},
{
name: 'Dofus Ocre',
item_type: 'Dofus',
level: 6
}
],
[
{ name: 'Dofawa', item_type: 'Dofus', level: 6 },
{
name: 'Dofus Kaliptus',
item_type: 'Dofus',
level: 6
},
{
name: 'Dofus Cawotte',
item_type: 'Dofus',
level: 6
}
],
[
{
name: 'Dofus Cawotte',
item_type: 'Dofus',
level: 6
},
{
name: 'Dofus Kaliptus',
item_type: 'Dofus',
level: 6
},
{ name: 'Dofawa', item_type: 'Dofus', level: 6 }
]
]
应该给这个对象:
[
[
{ name: 'Dofawa', item_type: 'Dofus', level: 6 },
{
name: 'Dofus Cawotte',
item_type: 'Dofus',
level: 6
},
{
name: 'Dofus Kaliptus',
item_type: 'Dofus',
level: 6
}
],
[
{ name: 'Dofawa', item_type: 'Dofus', level: 6 },
{
name: 'Dofus Emeraude',
item_type: 'Dofus',
level: 6
},
{
name: 'Dofus Ocre',
item_type: 'Dofus',
level: 6
}
]
]
【问题讨论】:
-
您的对象不起作用,因为它们的 toStrings 都将是 [object][object] 而不是“1,2,3”。这表明了提供minimal reproducible example 的重要性。您也许可以使用 JSON.stringify 而不是 sort
-
@mplungjan 并不是我在我的帖子中发布了编辑。
-
忽略它,“dofus ocre”的效果总是一样的,我将删除这个属性以便清晰易懂
-
从另一个评论“可以有 20000 个项目”。请阅读How to Ask
标签: javascript arrays node.js