使用 Javascript 1.6 / ECMAscript 5,
您可以通过
filter以下方式使用Array
的本机方法来获取具有唯一值的数组:
function onlyUnique(value, index, self) { return self.indexOf(value) === index;}// usage example:var a = ['a', 1, 'a', 2, '1'];var unique = a.filter( onlyUnique ); // returns ['a', 1, 2, '1']本机方法
filter将遍历数组,仅保留那些通过给定回调函数的条目
onlyUnique。
onlyUnique检查给定值是否是第一个出现。否则,它必须是重复的,并且不会被复制。
此解决方案无需任何额外的库(如jQuery或prototype.js)即可工作。
它也适用于混合值类型的数组。
对于旧版浏览器(<ie9),它们不支持本机方法
filter,
indexOf您可以在MDN文档中找到关于filter和indexOf的解决方法。
如果要保留最后一次出现的值,请简单地替换
indexOf为
lastIndexOf。
使用ES6可以简化为:
// usage example:var myArray = ['a', 1, 'a', 2, '1'];var unique = myArray.filter((v, i, a) => a.indexOf(v) === i);// unique is ['a', 1, 2, '1']
ES6有一个本地对象
Set来存储唯一值。要获得具有唯一值的数组,您现在可以执行以下操作:
var myArray = ['a', 1, 'a', 2, '1'];let unique = [...new Set(myArray)];// unique is ['a', 1, 2, '1']
构造函数
Set采用可迭代对象(例如Array),并且散布运算符
...将集合转换回Array。



