基于输入值/javascript筛选数组对象

基于输入值/javascript筛选数组对象,javascript,Javascript,我试图根据用户输入从数组列表中筛选对象,但我不确定如何实现这一点 这是我的html: <input id="search" type="text" placeholder="Search.."> <div id="animallist"></div> 我不知道这是否可行,但我想这样做,这样它会实时过滤项目,所以如果我在搜索框中输入字母C,那么它会删除数组列表中的其他两个项目,并只显示Cat 您可以编辑addLink以使div.dataset.an

我试图根据用户输入从数组列表中筛选对象,但我不确定如何实现这一点

这是我的html:

  <input id="search" type="text" placeholder="Search..">
    <div id="animallist"></div>
我不知道这是否可行,但我想这样做,这样它会实时过滤项目,所以如果我在搜索框中输入字母C,那么它会删除数组列表中的其他两个项目,并只显示Cat

您可以编辑addLink以使div.dataset.animalName=animal.name;,并添加以下代码:

search.addEventListenerkeyup,函数{ Array.fromanimallist.children.forEachd=>{ 如果d.dataset.animalName.toLowerCase.indexOfthis.value.toLowerCase!=-1{ d、 style.display=块; }否则{ d、 style.display=无; } }; }; 请参阅。

您可以编辑addLink以使div.dataset.animalName=animal.name;,并添加以下代码:

search.addEventListenerkeyup,函数{ Array.fromanimallist.children.forEachd=>{ 如果d.dataset.animalName.toLowerCase.indexOfthis.value.toLowerCase!=-1{ d、 style.display=块; }否则{ d、 style.display=无; } }; };
请参阅。

您也可以执行以下操作:

常数动物=[{ 姓名:猫, 有用:没有 }, { 姓名:狗,, 有用:是的 }, { 名称:鱼,, 有用:没有 } ]; const select=document.queryselector搜索; const AnimalList=document.querySelectoranimallist; select.onkeyup=函数搜索{ 常数{ 价值 }=选择; 如果值{ 动物过滤器{ 名称 } => { 如果name.toUpperCase.indexOfvalue.toUpperCase>-1{ AnimalList.innerHTML=名称 } } }否则{ AnimalList.innerHTML=重试。。。; } } 动物学家{ 边缘顶部:10px; 填充:10px; 背景:8e44ad; 颜色:fff; }
搜索动物…您还可以执行以下操作:

常数动物=[{ 姓名:猫, 有用:没有 }, { 姓名:狗,, 有用:是的 }, { 名称:鱼,, 有用:没有 } ]; const select=document.queryselector搜索; const AnimalList=document.querySelectoranimallist; select.onkeyup=函数搜索{ 常数{ 价值 }=选择; 如果值{ 动物过滤器{ 名称 } => { 如果name.toUpperCase.indexOfvalue.toUpperCase>-1{ AnimalList.innerHTML=名称 } } }否则{ AnimalList.innerHTML=重试。。。; } } 动物学家{ 边缘顶部:10px; 填充:10px; 背景:8e44ad; 颜色:fff; }
搜索一只动物…你知道如果我必须根据数字过滤对象,那该怎么办吗?假设我想输入数字并显示所有等于或优于输入值的项目?什么数字?你能说得更具体一点吗?假设我的数组列表中有另一个字段,它包含一个数值,例如price,What if语句,我需要能够根据价格过滤列表中的项目。我将在搜索输入中输入的值将显示具有相同值或更高值的所有项目>=。然后,您可以编辑addLink并添加div.dataset.price=animal.price,然后将过滤器编辑为parseIntd.dataset.price,10>=parseIntthis.value,10。您可以将行更改为this.value.length==0 | | parseIntd.dataset.animalPrice,10>=parseIntthis.value,10您知道如果要根据数字筛选对象,我必须使用什么样的if语句吗?假设我想输入数字并显示所有等于或优于输入值的项目?什么数字?你能说得更具体一点吗?假设我的数组列表中有另一个字段,它包含一个数值,例如price,What if语句,我需要能够根据价格过滤列表中的项目。我将在搜索输入中输入的值将显示具有相同值或更高值的所有项目>=。然后,您可以编辑addLink并添加div.dataset.price=animal.price,然后将过滤器编辑为parseIntd.dataset.price,10>=parseIntthis.value,10。您可以将行更改为this.value.length==0 | | parseIntd.dataset.animalPrice,10>=parseIntthis.value,10该方法不满足OPs要求。。。因此,如果我在搜索框中输入字母C,那么它将删除数组列表中的其他两项,并仅显示Cat。该方法不满足OPs要求。。。因此,如果我在搜索框中输入字母C,那么它将删除数组列表中的其他两项,并且只显示Cat。
const animals = [{
    name: "Cat",
    useful: "no"
  },
  {
    name: "Dog",
    useful: "yes"
  },
  {
    name: "Fish",
    useful: "no"
  }
  ]

animals.forEach(addLink);

function addLink(animal, i) {
  const div = document.createElement('div');
  const animalList = document.createElement('h2');
  animalList.innerHTML =  animal.name + " " +"-"+"useful?" + " "+ animal.useful;
  animalList.style.cssText = "text-align:center;"
  div.appendChild(animalList);
  animallist.appendChild(div);

}