我需要检查输入数组中的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">
答案 0 :(得分:1)
您可以使用2个for
循环并检查是否有2个输入i
和j
(其中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²)复杂度)