javascript - !== 比较运算符应该为 True 但不是

标签 javascript arrays if-statement comparison

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/

相关文章:

javascript - 使用 angularjs 的 Google 通讯录 API

arrays - 尝试返回数组时为 "ambiguous subscript"

分支非常不同的算法

r - R中for循环和ifelse的组合

javascript - 无法迭代 ElementArrayFinder

javascript - 试图让一个不和谐的机器人随机选择一个用户

javascript - React 事件处理 (onClick) 不一致

php - 将 MYSQL 结果放入 PHP 数组

javascript - AFrame - 是否可以用没有黑色边框的自定义图像替换标记?

mysql - 在 MySQL 中使用 IF 输出作为变量