题目
为 Array 对象添加一个去除重复项的方法
示例1
输入:
[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN] 输出: [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']
核心代码
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>数组去重</title> </head> <body> <!-- 为 Array 对象添加一个去除重复项的方法 示例1 输入: [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN] 输出: [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a'] --> <script>Array.prototype.uniq = function () { return Array.from(new Set(this)) } </script> </body> </html>
总结
Set数据结构类似于数组,但里面的成员都是唯一的。判断是否唯一的标准基本等同于‘===’,唯一的区别在于,‘===’判断时NaN与NaN不相等,但Set会认为它们相等并去重。
由于Set只是类似数组,所以要用Array.from返回一个真正的数组