检查数组onchange中的重复值

时间:2019-07-26 05:06:18

标签: javascript arrays

我需要检查输入数组中的2个值是否相同,以便删除重复项。

我尝试了一个for循环,比较了我

const input1 = document.querySelector("#a")
const input2 = document.querySelector("#b")
const unsafeInputs = [input1, input2]

function checkInputs() {
  for (let i = 0, j = unsafeInputs.length; i < j; i++) {
    if (unsafeInputs[i].value === unsafeInputs[j].value) {
      console.log("values are same")
      unsafeInputs[i].value = ""
    }
  }
}

input1.onchange = function() {
  checkInputs()
}
<input id="a">
<input id="b">

2 个答案:

答案 0 :(得分:1)

您可以使用2个for循环并检查是否有2个输入ij(其中i不等于j)是否相同值。如果它们具有相同的值,则可以清除输入j中的重复值。

const input1 = document.querySelector("#a")
const input2 = document.querySelector("#b")
const input3 = document.querySelector("#c")
const unsafeInputs = [input1, input2, input3]

function checkInputs() {
  for (let i = 0; i < unsafeInputs.length; i++) {
    for (let j = 0; j < unsafeInputs.length; j++) {
      if (i !== j && unsafeInputs[i].value === unsafeInputs[j].value) {
        console.log("values are same")
        unsafeInputs[j].value = ""
      }
    }
  }
}

unsafeInputs.forEach(input => input.onchange = checkInputs);
<input id="a">
<input id="b">
<input id="c">

答案 1 :(得分:0)

如果首先对数组进行排序,则只能在一个循环中执行此操作。然后,您可以检查两个连续的元素是否相同。否则,您需要两个循环,以将每个元素与所有其他元素进行比较(某些优化可能没有O(n²)复杂度)