2017-08-01 35 views
0

我有内部的基于阵列如何在Javascript中查找类似的字符串?

{codigo: "", clave: "USB005", nombre: "memoria usb kingston 16 GB", precio: "165", stock: "0"} 

{codigo: "", clave: "USB001", nombre: "MEMORIA USB BLACKPCS 16 GB", precio: "165", stock: "0"} 

{codigo: "", clave: "USB003", nombre: "MEMORIA USB SP 16 GB", precio: "165", stock: "0"} 

这样的信息,我有搜索特定数据的文本字段,现在它的工作原理与关键codigoclave但我想,使其与​​工作,以及但在这种情况下,是不同的,因为如果我写“Memoria”它应该得到的值匹配的话,但我不知道如何实现这一点,我试过indexOf,但它不工作,因为我认为

这我是怎么做到的codigoclave

$.each(todos, function(i) { 

    if (busqueda == todos[i]['clave'] || busqueda == todos[i]['codigo']) { 

     $('#resultado_precio').html(
      `<h4 class="text-danger m-t-25"><b>Precio: $ ${decimales(todos[i]['precio'])}</b></h4> 
      <h4 class="text-danger"><b>${todos[i]['nombre']}</b></h4> 
      <h4 class="text-danger"><b>Stock: ${todos[i]['stock']}</b></h4>` 
     ); 

     return; 

} 

});

如何才能找到我写在密钥​​搜索字的前5个匹配?

我希望你能帮助我一些想法,谢谢。

回答

0

可以使用indexOf()用OR(||)情况如下图所示: -

工作例如: -

var todos = [{codigo: "", clave: "USB005", nombre: "memoria usb kingston 16 GB", precio: "165", stock: "0"},{codigo: "", clave: "USB001", nombre: "MEMORIA USB BLACKPCS 16 GB", precio: "165", stock: "0"},{codigo: "", clave: "USB003", nombre: "MEMORIA USB SP 16 GB", precio: "165", stock: "0"}]; 
 

 
var busqueda = "memoria"; 
 
$.each(todos, function(i) { 
 

 
    if (busqueda == todos[i]['clave'] || busqueda == todos[i]['codigo'] || todos[i]['nombre'].toUpperCase().indexOf(busqueda.toUpperCase()) !==-1) { 
 

 
    alert('found'); 
 

 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

注: - 您也可以使用toLowerCase()

+1

有意删除评论。所有好人! –

+0

谢谢你,用这种方式现在我可以看到一种方法来解决我的问题 – Ashe

+1

@Ashe很乐意帮助你。:) :) –

相关问题