javascript 将列表中的每一项与另一项进行比较

qnzebej0  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(155)

我需要查看一个元素是否在另一个列表中,但它们不按顺序排列,大小也不相等。

let list1 = [10 , 4 , 5]
let list 2 = [4 , 5]

我试过这个,但只有当它们的顺序相同时才有效。

for(var i=0;i<=document.querySelectorAll('.datename').length;i++){

    if(document.querySelectorAll('.inputname')[i].value==document.querySelectorAll('.datename')[i].innerHTML){
        console.log(document.querySelectorAll('.other')[c].classList)
           document.querySelectorAll('.other')[c].classList.add('active2')
    }
}
sd2nnvve

sd2nnvve1#

您可以先将所有元素值放入一个数组中,然后使用Array#includes检查是否匹配。

let vals = Array.from(document.querySelectorAll('.inputname'), el => el.value);
for (const el of document.querySelectorAll('.datename')) {
    if (vals.includes(el.textContent)) {
        // do something
    }
}
vxqlmq5t

vxqlmq5t2#

您尝试过的可能解决方案是:

const input = document.querySelectorAll('.input');
const data = document.querySelectorAll('.data');

for (let i = 0; i < input.length; i++) {
  const inputValue = input[i].value;
  
  if (Array.from(data).some(dateElement => dateElement.innerHTML === inputValue)) {
    console.log('Element ' + inputValue + ' is included in datename list.');
    // do something if the element is included, e.g.
    document.querySelectorAll('.other')[i].classList.add('active2');
  } else {
    console.log('Element ' + inputValue + ' is not included in datename list.');
  }
}

或者,
如果你想检查一个数组中的数据是否包含在另一个数组中,如果它们的长度不同,那么你可以使用include()方法。

let list1 = [10, 4, 5];
let list2 = [4, 5];

for (let i = 0; i < list2.length; i++) {
  if (list1.includes(list2[i])) {
    console.log("Element " + list2[i] + " is in list1.");
  }
}

产出将是:
//Element 4 is in list1.
//Element 5 is in list1.
检查沙箱:https://codesandbox.io/embed/sleepy-stitch-jb3c6l?fontsize=14&hidenavigation=1&theme=dark

相关问题