我有一个包含三列的数组:
[ '27', 'Name', '1' ],
[ '27', 'Name', '1' ],
[ '27', 'Name', '1' ],
[ '27', 'Name', '2' ]
我试图删除在第三列中有重复的项目,所以我得到:
[ '27', 'Name', '2' ]
我正在使用此代码:
function getUniqueListBy(arr, key) {
return [...new Map(arr.map(item => [item[key], item])).values()]
}
let newArray = getUniqueListBy(myArr, '2');
它在删除重复项方面做得非常好,但我也想删除该项目(已复制的项目)。如果可能,我希望代码尽可能高效。我怎样才能做到这一点?
映射:您可以在索引处创建元素映射,2
并将值存储为index
包含该索引处相同值的数组。
它是一个元素字典,在2
索引处包含相同的元素。
过滤器:如果2
索引数组长度的元素应该是,则过滤结果并在字典中查找1
const arr = [
["27", "Name", "1"],
["27", "Name", "1"],
["27", "Name", "1"],
["27", "Name", "2"],
];
// [ '27', 'Name', '2' ]
const map = new Map();
// na is nestedArray
arr.forEach((na, i) => {
const value = na[2];
if (map.has(value)) map.get(value).push(i);
else map.set(value, [i]);
});
const result = arr.filter((na, i) => map.get(na[2]).length === 1);
console.log(result);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句