首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从逗号分隔列表中删除重复项

从逗号分隔列表中删除重复项
EN

Stack Overflow用户
提问于 2011-07-31 02:19:39
回答 4查看 947关注 0票数 1

我使用map-function从几个li元素的rel属性中生成一个逗号分隔的列表。

代码语言:javascript
复制
poiSelectedList = $('#poiList li li.selected').map(function() { return $(this).attr('rel'); }).get().join(',');

如何确保我的列表中没有重复项?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-31 02:32:10

您可以像这样创建一个缓存:

代码语言:javascript
复制
var cache = [];
poiSelectedList = $('#poiList li li.selected').map(function() {
    var rel = $(this).attr('rel');
    if(cache.indexOf(rel) === -1) {
        cache.push(rel);
        return rel;
    } else {
        return undefined;
    }
}).filter(function(a, b) {
   return b !== undefined;
}).get().join(',');

或者,就像patrick dw建议的那样,一个更简洁的版本:

代码语言:javascript
复制
var cache = [];
$('#poiList li li.selected').each(function() {
    var rel = $(this).attr('rel');
    if(!$.inArray(rel, cache)) {
        cache.push(rel);
    }
});
var poiSelectedList = cache.join(); // defaults to ,
票数 2
EN

Stack Overflow用户

发布于 2011-07-31 02:34:56

你可以这样做:

代码语言:javascript
复制
var duplicates = {};

poiSelectedList = $('#poiList li li.selected').map(function() { 
     var rel = $(this).attr('rel'); 
     if (duplicates[rel] !== true){
         duplicates[rel] = true;
        return rel;
   }
}).get().join(',');
票数 1
EN

Stack Overflow用户

发布于 2011-07-31 02:31:31

虽然这既不短也不好看,但它应该是一种快速的方法。

代码语言:javascript
复制
var poiSelectedList='';
var tmp;
$('#poiList li li.selected').each(function() { tmp[$(this).attr('rel')]=1; });
var comma=0;
for(var i in tmp) if (tmp.hasOwnProperty(i)){
if(comma){poiSelectedList+=','}else{comma=1}
poiSelectedList+=i;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6885098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档