Javascript 我怎样才能用forEach()完成它?

Javascript 我怎样才能用forEach()完成它?,javascript,arrays,Javascript,Arrays,我已经用搜索栏做了一些工作,它正在工作。现在我想用forEach()或filter()来完成它,而不是用纯Javascript来完成for循环。这是我的HTML和JS代码。有人能帮我吗 函数myFunction(){ 让输入=document.getElementById('mySearch'); 让bind=input.value.toUpperCase(); 设ul=document.getElementById('myMenu'); 设li=ul.getElementsByTagName

我已经用搜索栏做了一些工作,它正在工作。现在我想用
forEach()
filter()
来完成它,而不是用纯Javascript来完成for循环。这是我的HTML和JS代码。有人能帮我吗

函数myFunction(){
让输入=document.getElementById('mySearch');
让bind=input.value.toUpperCase();
设ul=document.getElementById('myMenu');
设li=ul.getElementsByTagName('li');
for(设i=0;i-1){
li[i].style.display=''
}否则{
li[i].style.display='none';
}
}
}


li
s的集合转换为数组,或使用
querySelectorAll
,它返回一个
NodeList
,在较新的浏览器中具有
forEach
方法:

函数myFunction(){
让输入=document.getElementById('mySearch');
让bind=input.value.toUpperCase();
document.queryselectoral('#myMenu>li').forEach((li)=>{
if(li.textContent.includes(bind))li.style.display=''
else li.style.display='none';
});
}


这里没有理由使用
过滤器,因为您不想创建数组,也没有理由使用
forEach
。如果您试图简化代码,请使用
for…of
循环隐藏/显示以下项目:

function myFunction() {
  const input = document.getElementById('mySearch').value.toUpperCase();

  const items = document.getElementById('myMenu').getElementsByTagName('li');
  for (const li of items) {
    let a = li.getElementsByTagName('a')[0];
    li.style.display = a.innerHTML.toUpperCase().includes(input) ? '' : 'none';
  }
}

您是如何尝试的?我可以用filter()方法吗?我可以用filter()方法吗?这是不明智的,因为
filter
将只返回匹配的元素,而您需要更改所有元素的样式,而不仅仅是匹配的元素。(除非您浏览列表两次,一次隐藏所有内容,然后在
.filter
之后浏览一次以显示匹配的内容)