我正在编写一个javascript代码,用户应该能够搜索维度元素,该元素显示在带有表格的"弹出窗口"窗口中。
显示数组中元素的代码如下所示:
$element.find("#myInput").on("qv-activate", function (){
let elemList = [];
self.backendApi.getData(requestList).then(function (dataPages) {
let elem = dataPages[0].qMatrix;
for(let i = 0; i < elem.length; i++){
elemList.push(elem[i][0].qText);
}
$(document).ready(function () {
$("#myInput").on("keyup", function () {
var value = $(this).val().toLowerCase();
for (var i=0; i<elemList.length; i++) {
if (elemList[i].toLowerCase().indexOf(value) >= 0){
$element.find('#searchTable').prepend('<tr><td id="searchElem">' + elemList[i] + '</td></tr>');
}
}
});
});
})
})
唯一的问题是,当我使用搜索栏时,它会多次显示元素。有没有办法确保 .prepend(( 仅在与以前不同的值时才在前面预置? 某种;如果元素值与前面的预置值相同,则不要前置?
希望这是有道理的,并且您有解决我的问题的方法。 谢谢!
不要在第二个 for 循环中调用prepend
,而是创建一个新数组并附加elemList[i]
。
然后使用"获取数组中的所有唯一值(删除重复项("中的解决方案从数组中删除重复项。例如,如果values
是新阵列:
function onlyUnique(value, index, self) {
return self.indexOf(value) === index;
}
values = values.filter(onlyUnique);
最后,遍历新数组并调用每个数组prepend
。