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

How to find similar strings inside Array with Javascript?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
{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的处理方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
$.each(todos, function(i) {

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

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

        return;

 }

(});

如何才能在键nombre中找到我要搜索的单词的前5个匹配项?

我希望你能帮我一些主意,谢谢。


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

工作示例:

1
2
3
4
5
6
7
8
9
10
11
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');

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

注:也可以使用toLowerCase()