bos*_*972 5 javascript arrays node.js
我有这个数组
[[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 }
]
]
Run Code Online (Sandbox Code Playgroud)
应该给这个对象:
[
[
{ 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
}
]
]
Run Code Online (Sandbox Code Playgroud)
通过使用 aaray 对象,并且该对象具有相同的键顺序,您可以将每个对象作为单个JSON字符串获取,并对 JSON 数组进行排序,然后将此字符串连接到单个字符串,并将该字符串作为值来检查唯一性A Set。
const
normalize = v => v.map(o => JSON.stringify(o)).sort().join('|'),
filterWithSet = s => v => (n => !s.has(n) && s.add(n))(normalize(v)),
data = [[{ 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 }]],
unique = data.filter(filterWithSet(new Set));
console.log(unique);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |