筛选2个数组以查看是否存在重复



我想知道你如何比较两个数组来查看天气或是否有一个重复的数组

const result = this.specialRange.filter(d => !dayMonth.includes(d));

我所尝试的只是将整个数组返回给我,我只是想看看是否有重复的是->做点什么->不要

var dayMonth: any[] = ["1201","1202","1203","1204",1205"];
specialRange: any[] = ["1201","1202","1203","1204"];

它要么返回整个特殊范围,要么返回日/月,这取决于前导参数是什么我只想要一个简单的真/假等价如果有重复

两个数组都被格式化为具有相似的值,尽管它们是Any类型目前这只是为了实际的学习目的

值总是跟在诸如"1201,1202,1203,1204"所以MM/DD

编辑python:

测试:

dayMonth =1215,1216

specialRange =1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229

改编的方法:

for(let v of dayMonth){
if(this.specialRange.includes(v)){
alert('true');
}
else{
alert('false')
}
}

结果=比;假/假

由于某些原因,当我使用console.log

时,控制台没有记录任何内容。

我毫不怀疑有更好的方法来做到这一点,但这里有一个快速而肮脏的方法:

const a1 = [1200, 1201, 1202, 1203];
const a2 = [1202, 1203, 1204];
// Expected Duplicates: [1202, 1203]
// Expected Unique: [1200, 1201, 1204]

function filter_duplicates(arr1, arr2) {
let duplicates = [];
let unique = [];
for (let v of arr1) {
// If value in arr2 it's a duplicate, if not, it's unique
if (arr2.includes(v)) {
duplicates.push(v);
} else {
unique.push(v);
}
}
for (let v of arr2) {
// If value isn't a duplicate, it's unique
if (!duplicates.includes(v)) {
unique.push(v);
}
}
console.log("Duplicates: ", duplicates);
console.log("Unique: ", unique);
return {duplicates: duplicates, unique: unique}
}
filter_duplicates(a1, a2);

let result = this.specialRange.filter(o1 => dayMonth.some(o2 => o1 === o2));

这将导致重复的项目。你可以简单地检查结果数组的长度。如果数组。长度比;0则返回true否则返回false

最新更新