JavaScript 数组去重(一)
前端面试或笔试经典题目之一——数组去重
一、ES6 + Set 去重法
可以去重
NaN无法去重
[],{}
1 | function unique (arr) { |
二、for循环 + indexOf+ splice 去重法
for循环倒序遍历,利用indexOf查找遍历值的索引,并用splice去重
- 由于
NaN!==NaN,因此当多个NaN存在时,不会去重NaN- 无法去重
[],{}
1 | function unique (arr) { |
三、forEach + indexOf + 新数组 去重法
新建一个空数组,for 循环原数组,判断结果数组是否存在当前元素.
如果有相同的值则跳过,不相同则push进数组
- 由于
NaN!==NaN,因此当多个NaN存在时,不会去重NaN- 无法去重
[],{}
1 | function unique (arr) { |
四、fillter +indexOf 去重法
使用数组的filter方法和数组的indexOf方法
- 无法去重[], {}
- NaN 被删除了
1 | function unique(arr) { |
五、filter + hasOwnProperty 去重法
使用数组的filter方法和对象的hasOwnProperty方法
1 | function unique(arr) { |