建网站的小软件,网站开发与设计实训心得一千字,做视频上什么网站找创意,网站排名优化推广前言 数组去重已经是一个老生常谈的问题了#xff0c;依然经久不息#xff0c;经过岁月的变迁es标准的升级迭代#xff0c;似乎有越来越多的方法和方式供我们使用#xff0c;那么那种方式才是最优的#xff1f;那种才是最简洁的#xff1f;这个我们一起来探讨。
省略依然经久不息经过岁月的变迁es标准的升级迭代似乎有越来越多的方法和方式供我们使用那么那种方式才是最优的那种才是最简洁的这个我们一起来探讨。
省略传统的递归方法这里我就不说了是最传统也是最笨的方法。 方法一es5使用filter 使用Array.prototype.filter()方法对元素进行过滤
相关资料Array.prototype.filter() var array [2, 2, 2, 2];
// es5 使用filter
function unique(array) {
var obj {};
return array.filter(function (item, index) {
var fullItem (typeof item item);
return obj.hasOwnProperty(fullItem) ? false : (obj[fullItem] true);
});
}
console.log(unique(array)); //[2,2] 方法二使用es6 Set Set里的元素只能出现一次即元素是唯一的。
下面的代码中也使用了...扩展语句简单来说就是把数组转换成n个对象的方法。
相关链接Set var array [2, 2, 2, 2];
//es6 使用Set特性Set元素只会出现一次即元素是唯一的
let unique (array) [...new Set(array)]; //(...)扩展语句简单来说就是把数组参数转换为多个对象参数
console.log(unique(array)); //[2,2] 方法三使用es6 Map Map也是es6新出的数据类型方法set、has、get、clear、delete、keys都挺好用的。
相关链接Map var array [2, 2, 2, 2];
//es6 Map 本质使用的还是Array.prototype.filter()
function unique(array) {
let m new Map();
return array.filter((item) !m.has(item) m.set(item, 1));
}
console.log(unique(array)); 总结 个人觉得最优的方案是第二种欢迎补充欢迎指正~