ES5 ES6中Array对象去除重复项的方法总结

这篇文章主要给大家介绍了Array对象去除重复项的相关资料,文中通过示例代码详细介绍了在ES5和ES6中Array对象去除重复项的方法,需要的朋友可以参考借鉴,下面来一起看看吧。

输入例子

 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq()

输出例子

 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']

分析

题目要求给 Array 添加方法,所以我们需要用到 prototype。数组去重本身算法不是很难,但是在 JavaScript 中很多人会忽视 NaN 的存在,因为在 JS 中 NaN !== NaN 。但是在去重中我们又不能保留两个 NaN ,所以需要进行一下判断,这是很多人容易忽视的。

ES5的实现如下:

代码

 Array.prototype.uniq = function () { var arr = []; var flag = true; this.forEach(function(item) { // 排除 NaN (重要!!!) if (item != item) { flag && arr.indexOf(item) === -1 ? arr.push(item) : ''; flag = false; } else { arr.indexOf(item) === -1 ? arr.push(item) : '' } }); return arr; }

验证

我们只需要在数组上直接调用 uniq 方法就可以了,如:

 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq()

结果为:

 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']

进阶

ES6的实现

ES6新增了 Set 对象,也就是我们所说的“集合”,它类似于数组,但是成员的值都是唯一的,没有重复的值。所以可以方便去重。

Set本身是一个构造函数,用来生成Set数据结构。(详看

以上就是ES5 ES6中Array对象去除重复项的方法总结的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » JavaScript 教程