我在数组中有这样的信息 -
{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"}
我有一个用于搜索特定数据的文本字段,现在它可以使用密钥codigo
和clave
,但我希望它也适用于nombre
但是在此案例是不同的,因为如果我写“Memoria”它应该得到匹配单词的值,但我不知道如何实现这一点,我尝试使用indexOf
,但它没有像我想象的那样工作
这就是我对codigo
和clave
$.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个匹配项?
我希望你能帮助我一些想法,谢谢。
答案 0 :(得分: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');
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
注意: - 您也可以使用toLowerCase()