如何使用Javascript在Array中找到类似的字符串?

时间:2017-08-01 16:40:47

标签: javascript jquery

我在数组中有这样的信息 -

{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,但我希望它也适用于nombre但是在此案例是不同的,因为如果我写“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;

 }

});

如何在密钥nombre中查找我写入的搜索字词的前5个匹配项?

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

1 个答案:

答案 0 :(得分:0)

您可以将indexOf()与OR(||)条件一起使用,如下所示: -

工作示例: -

&#13;
&#13;
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');

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

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