从Ajax调用列表中删除重复的li元素

时间:2015-07-28 20:26:47

标签: jquery html ajax

我正在使用ajax调用填充li列表。我在li中不需要表格中的重复值。只应将唯一值添加到li列表中。我知道这应该在SQL方面解决,但是现在我只需要能够在jQuery中过滤列表。

HTML:

<ul id="bookList">
</ul>

JS:

$.ajax({
        type: "GET",
        url: "getchapters.php",
        dataType: 'json',
        cache: false,
        success: function(results) {


            $.each(results, function(index, result) {

                var Books = result.books.split(",");

                $("#bookList").append('<li>' + Books + '</li>');

            });
        }
    });

因此,如果“绿色鸡蛋和火腿”一书出现一次,它就会被添加到列表中。它第二次出现时会被忽略。

3 个答案:

答案 0 :(得分:3)

您可以在循环外部创建一个单独的数组来跟踪

   <xe:dynamicViewPanel
      id="dynamicViewPanel1"
      var="rowData"
      indexVar="index">
      <xe:this.data>
         <xp:dominoView
            var="view1"
            viewName="testview">
         </xp:dominoView>
      </xe:this.data>
      <xe:this.rowAttrs>
         <xp:attr
            name="noteId"
            value="#{javascript:rowData.getNoteID()}">
         </xp:attr>
      </xe:this.rowAttrs>
      <xp:eventHandler
         event="onColumnClick"
         submit="false">
         <xe:this.script><![CDATA[
            alert(thisEvent.target.parentNode.parentNode.getAttribute("noteId"));
         ]]></xe:this.script>
      </xp:eventHandler>
   </xe:dynamicViewPanel>

答案 1 :(得分:0)

在填充列表之前,使用此代码从数组中删除重复:

var Books = result.books.split(",");
var uniqueNames = [];

$.each(Books, function(i, el){
    if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});

答案 2 :(得分:0)

之后

var Books = result.books.split(",");

使用此

Books = Books.reduce(function(c,l){
     if(c.indexOf(l) > -1){
        return c;
     }
     c.push(l);
     return c;
},[]);

现在书籍只有独特的项目

**更新:** 你可以使用套装

booksSet = new Set(Books);

现在你有bookSet,你可以使用forEach或者你想要的任何东西,