从ES5.1开始,您可以使用本机方法Array.prototype.filter遍历数组,仅保留通过给定回调函数的条目。
在以下示例中,我们的回调检查给定值是否出现在数组中。如果是这样,它将是重复项,并且不会被复制到结果数组中。
var uniqueArray = ['a', 1, 'a', 2, '1', 1].filter(function(value, index, self) { return self.indexOf(value) === index; }); // 返回['a',1,2,'1']
如果您的环境支持ES6,则还可以使用Set对象。该对象使您可以存储任何类型的唯一值,无论是原始值还是对象引用:
var uniqueArray = [... new Set(['a', 1, 'a', 2, '1', 1])];
另请参阅以下关于SO的提示:
相关SO答案
与ES6相关的答案