1

我有 2 个简单的数组需要组合和排序,很简单。但是随后需要删除重复项。

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);
})

不知道怎么做到这一点?!

4

2 回答 2

2

您可以利用字典数据结构

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 之后可用。

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

于 2013-08-20T19:12:46.937 回答
0

您可以将它们全部混合在一起(并在运行时对其进行排序),然后使用http://underscorejs.org/#uniq处理它们

uniq_.uniq(array, [isSorted], [iterator]) 别名:唯一

生成数组的无重复版本,使用 === 来测试对象是否相等。如果您事先知道数组已排序,则为 isSorted 传递 true 将运行更快的算法。如果要基于转换计算唯一项,请传递迭代器函数。

于 2013-08-20T19:07:34.230 回答