关于javascript:我需要组合2个简单的数组并删除重复项

I need to combine 2 simple arrays and remove duplicates

本问题已经有最佳答案,请猛点这里访问。

我有两个简单的数组需要组合和排序,非常简单。但是重复的需要被删除。

1
2
3
4
5
6
7
8
oldProgrammers = new Array('Rob', 'Neek', 'Lisa', 'Susan');
newProgrammers = new Array('Brett', 'John', 'Tom', 'Lisa');

allProgrammers = oldProgrammers.concat(newProgrammers).sort();

allProgrammers.forEach(function(arrEl){
    alert(arrEl);
})

我不知道怎么做?!


您可以利用字典数据结构

1
2
3
4
memo = {};
oldProgrammers.map(function(i){memo[i] = 1;});
newProgrammers.map(function(i){memo[i] = 1;});
allProgrammers = Object.keys(memo);

map()可从javascript 1.8获得,Object.keys()应在chrome 5之后获得。

但是所有真正的浏览器都支持它:)


您可以将它们混合在一起(并在运行时对它们进行排序),然后使用http://underlinejs.org/uniq进行分析。

uniq_.uniq(array, [isSorted], [iterator]) Alias: unique

Produces a duplicate-free version of the array, using === to test object equality. If you know in advance that the array is sorted, passing true for isSorted will run a much faster algorithm. If you want to compute unique items based on a transformation, pass an iterator function.