您的位置:首页 > 编程语言 > Java开发

最全的数组去重方法对比

2016-07-02 18:26 411 查看

常规方法两种

let unique1 = arr => {
var res = [],
json = {};
arr.forEach(function(value, arr) {
if(!json[value]) {
res.push(value);
json[value] = 1;
}
})
return res;
}
let unique2 = arr => {
//数组深拷贝,为不了影响原来的数组
let arr1 = arr.concat();
arr1.sort();
for (var i = 1; i < arr1.length; i++ ) {
if ( arr1[i] === arr1[ i - 1 ] ) { // use == if '2' eq 2, else ===
arr1.splice( i--, 1 );
}
return arr1;
}


使用ES5的indexOf方法两种

let unique3 = arr => {
arr.forEach(function(value) {
res.indexOf(value) < 0 ? this.push(value) : '';
}, res = [])
}
let unique4 = arr => {
let res = [];
arr.forEach(function(value) {
(res.indexOf(item) == -1) && res.push(item);
})
return res;
}
let arr = [1, 1, 2, 2];
unique3(arr);
console.log(res);


简洁优雅版

let unique5 = arr => { return arr.filter(function (value, index, array) { return index <= array.indexOf(value);}); };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息