JavaScript数组去重,是日常开发中经常使用到的技能点。
本文总结常见的js去重方法,如果需要兼容IE,可以使用babel编译生成适配IE的代码。
ES5实现
JavaScript 1.6 / ECMAScript 5 你可以使用原生的方法filter来实现数组去重。
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。
该方法也适用于混合类型数组。
对于不支持filter或indexOf方法的旧浏览器,我们可以考虑放弃。
开玩笑,大家可以参考一下MDN文档,找到关于filter和indexOf兼容解决方案。
ES6
ES6可以使用Set来实现数组的去重,相比于ES5代码将会变得更加简单。
var myArray = ['a', 1, 'a', 2, '1'];
let unique = [...new Set(myArray)];
// unique is ['a', 1, 2, '1']