首页 > 解决方案 > 检查数组 onchange 中的重复值

问题描述

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

我尝试了一个比较 i 的 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">

标签: javascriptarrays

解决方案


您可以使用 2 个for循环并检查是否有任何 2 个输入iji不等于j)具有相同的值。如果它们具有相同的值,您可以从 input 中清除重复值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">


推荐阅读