function nonUniqueElements(data) {
var duplicates = [];
var compArr = data;
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < compArr.length; j++) {
console.log('Comparing ' + data[i] + ' to ' + compArr[j]);
if (data[i] === compArr[j]) {
console.log('Found match first pass');
console.log(data.indexOf(i), compArr.indexOf(j));
if (data.indexOf(i) !== compArr.indexOf(j)) {
console.log('Also passes second pass')
console.log('Pushing ' + data[i] + ' to new array')
duplicates.push(data[i]);
console.log(duplicates);
}
}
}
console.log('End of run through');
}
return (duplicates);
}
console.log(nonUniqueElements([5, 5, 5, 5]));
我试图返回数组中的所有非唯一值。我已经复制了该数组,并运行一个嵌套循环来将副本与原始数组进行比较。
当它找到匹配项时(在这种情况下每次),都会进行第二次检查,以确保仅将不同索引处的值推送到新数组。
我已经添加了一些 console.log() 来帮助我逐步完成程序。即使 console.log(data.indexOf(i), compArr.indexOf(j)) 打印不同的值, if (data.indexOf(i) ! == compArr.indexOf(j)) 语句未运行。
有什么想法吗?
最佳答案
在 JS 中,indexOf() 方法返回指定值在字符串/数组中第一次出现的位置。您可以看出这是错误的,因为在 console.log 中您总是得到值 -1。 您需要比较的是 data[i] 和 compArr[j]。
关于javascript - !== 比较运算符应该为 True 但不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52951056/