2017-08-01 60 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很樂意幫助你。:) :) –

相關問題