我有以下物品。我想删除重复的项目并返回数组。我尝试使用Set
,但是我认为这不是我当前正在使用的Ecma脚本的一部分。我知道这个问题在这里已经被问过多次了,但是我似乎无法让我工作。
0:(2)[0,2]
1:(2)[0,2]
2:(2)[1、2]
3:(2)[1、3]
function checkDuplicate(array: any, obj: any) {
const exists = array.some((o: any) => o.itemOne === obj.itemOne && o.itemTwo === obj.itemTwo);
if (exists) {
return true;
} else {
return false;
}
}
function check() {
const testArray: any = [];
arrayOne().map((item: any) => {
arrayTwo().map((item2: any) => {
if (item.someMatchingValue === item2.someMatchingValue) {
if (!checkDuplicate(testArray, [item.itemOne, item2.itemTwo])) {
testArray.push([item.itemOne, item2.itemTwo]);
}
}
});
});
console.log(testArray);
return testArray;
}
最佳答案
您正在使用const
和其他ES6功能,因此您应该能够使用Set
就好了。您可能遇到的问题是两个数组与其他数组不相等,因此将您的数组放入Set
不会删除内部数组。相反,您可以将数组中的每个内部数组映射到一个字符串,以便随后可以使用Set
删除重复项,然后使用Array.from
和JSON.parse
将您的Set
字符串转换回数组像这样的数组:
const arr = [[0, 2], [0, 2], [1, 2], [1, 3]];
const res = Array.from(new Set(arr.map(JSON.stringify)), JSON.parse);
console.log(res);