繁体   English   中英

如何防止将两个相同的元素打印在表格中?

[英]How do I prevent two identical elements to be printed in a table?

我正在编写一个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM