将没有特定 class 的元素推入数组

Push elements that don't have a specific class into an array

我试图创建一个函数来寻找没有 class“检查”的元素,在这种情况下我明白了。然后我想把它们压入一个数组,所以我得到了长度,但是我得到的不是我想要的,你有什么解决办法吗?

请阅读我在代码中的评论

我想要的是获取没有 class "check"

的列表的长度
const countUnactiveList =()=> {
  let list = [...todoList.children];
  let listArr = [];
  
  list.filter(child => {
    if(!child.classList.contains('check')) {
      console.log(child); //it works, i got the lists that does not have class "check"
      listArr.push(child); 
      console.log(listArr.length); //the output are 1 2 3 creeping down. But it should be 3
    }
  });
}

Array.prototype.filter return 是一个新数组,您在每次迭代中记录长度。

固定代码如下:

const countUnactiveList = () => {
  const list = [...todoList.children];
  
  const listArr = list.filter(child => {
    return !child.classList.contains('check');
  });

  console.log(listArr, listArr.length);
  
  return listArr.length;
}

根据函数名称,我认为您只对计数感兴趣。您可以return筛选数组的长度。

使用 reduce 的替代方法:

const countUnactiveList = () => {
  const list = [...todoList.children];

  return list.reduce((count, child) => {
    if(!child.classList.contains('check')) {
        count += 1;
    }
    return count;
  }, 0)
};