Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将具有相同值的列表元素转换为具有值的单个元素_Jquery_Angularjs_Ng Repeat - Fatal编程技术网

Jquery 将具有相同值的列表元素转换为具有值的单个元素

Jquery 将具有相同值的列表元素转换为具有值的单个元素,jquery,angularjs,ng-repeat,Jquery,Angularjs,Ng Repeat,这个标题和我的一样愚蠢:) 我不知道这是否可能,但我不得不问。。我在Angularjs中使用ng repeat和JSON,我得到的是一个包含这些值的列表 <ul> <li class="name">Nokia</li> <li class="name">Nokia</li> <li class="name">Nokia</li> <li class="name"&g

这个标题和我的一样愚蠢:) 我不知道这是否可能,但我不得不问。。我在Angularjs中使用ng repeat和JSON,我得到的是一个包含这些值的列表

 <ul>
     <li class="name">Nokia</li>
     <li class="name">Nokia</li>
     <li class="name">Nokia</li>
     <li class="name">ZTE</li>
     <li class="name">ZTE</li>
     <li class="name">Samsung</li>
     <li class="name">Samsung</li>
     <li class="name">ZTE</li>
</ul>

一个纯粹而愚蠢的jQuery解决方案:

var names = [];
$("ul li").each(function(){
    if($.inArray($(this).text(), names) != -1){
        $(this).remove();
    }else{
        names.push($(this).text());
    }
});


您最好在后端使列表唯一,但这取决于数据的创建方式。

如果是我的代码,我会在创建任何html元素之前从数据中删除重复项。但是,由于您没有显示任何JavaScript或JSON结构,因此我只能提供一种从html中删除重复项的方法:

var names = {};
$("ul li").filter(function() {
    var name = $(this).text();
    if (name in names)
        return true;
    names[name] = true;
    return false;
}).remove();
演示:


如果您不确定我使用的jQuery函数是如何工作的,您知道。

您也可以使用Angular UI提供的唯一过滤器

<ul>
    <li ng-repeat="item in items | unique:attribute">{{ item.attribute }}</li>
</ul>
  • {{{item.attribute}

这取决于如何生成第一个列表。如果JSON中存在重复项,则可以对其进行迭代,并创建一个只存储唯一名称的新数组。你应该提供所有相关的代码。当然这是可能的。您可以在创建html元素之前处理数据以删除重复项,也可以创建html元素然后删除重复项。(顺便说一句,如果每个li元素都有相同的类,那么将该类添加到包含ul的元素中会更整洁。)@nnnnnn:当您首先使用AngularJS绑定到HTML时,删除HTML是很奇怪的。如果他只是想要底层模型的不同表示,他应该过滤数据。事实上,我比我更喜欢这个模型的功能方面:-)这正是我要搜索的:)我会编辑这个问题,这样好的人可以看到我的JSON。。。
var names = {};
$("ul li").filter(function() {
    var name = $(this).text();
    if (name in names)
        return true;
    names[name] = true;
    return false;
}).remove();
<ul>
    <li ng-repeat="item in items | unique:attribute">{{ item.attribute }}</li>
</ul>