数组去重
数组去重作为js的经典面试题,比较考察js基础,在实际应用中也有较多的场景。
常规方法
- 利用对象属性
function oSort( arr ) {
var result = {};
var newArr = [];
for (var i = 0 ; i < arr.length; i ++ ) {
if (! result[arr[i]]) {
newArr.push(arr[i]);
result[arr[i]] = 1;
}
}
return newArr;
}
- 利用传入数组查询值指针是否为自己
function oSort2( arr ) {
var n = [];
for (var i = 0 ; i <arr.length; i ++ ) {
if (arr.indexOf(arr[i])== i) {
n.push(arr[i]);
}
}
return n;
}
- 查找返回数组查询值是否存在
function oSort3 ( arr ) {
var n = [];
for (var i = 0 ; i <arr.length; i ++ ) {
if (n.indexOf(arr[i])<0 ) {
n.push(arr[i]);
}
}
return n;
}
es6拓展
- set ,本身数据结构为非重复数组
const unique = arr => {
return [...new Set(arr)]
}
- filter ,支持数组过滤
const unique = arr => {
return arr.filter((ele, index, array) => {
return index === array.indexOf(ele)
})
}