如果循环同时运行true和false

时间:2015-12-31 15:44:03

标签: javascript arrays

有点困惑,我有下面的代码循环遍历一个数组,如果该值不在另一个数组中,则将其推入。但是无论indexOf语句的计算结果为true还是false,它都会被推入数组中 - 不太确定为什么会这样。

function findUnique(fieldId) {
  let uniques = [];
  for (let i = 0; i < data.length; i++){
    console.log(uniques.indexOf(data[i][fieldId]) === -1);
    if (uniques.indexOf(data[i][fieldId] === -1)) {
      uniques.push(data[i][fieldId]);
    }
  }
  return uniques;
}

假设数据中有2项......

首先通过将注销-1,因为它不在数组中,然后推送到数组......

第二遍记录0,因为它在数组中,但都将它推入数组......

uniques注销为[&#39; a&#39;,&#39; a&#39;]

1 个答案:

答案 0 :(得分:0)

只是一个错字。您目前正在寻找阵列中的false

更改

if (uniques.indexOf(data[i][fieldId] === -1)) {

if (uniques.indexOf(data[i][fieldId]) === -1) {