今天给朋友们带来数组元素去重的方法:
首先我们定义一组数据:
let array = [3, 1, 7, 1, 3, 2, 5, 4, 3, 2, 5, 7, 8, 9, 8];
let newArray = [];
接下来我们分别用不同的方法去对他进行去重。放到newArray里面。
一:ES3普通循环
function has(array,val){
for(var i=0,len=array.length;i<len;i++){
if(array[i]===val)
return true;
}
return false;
}
for (let i = 0, len = array.length; i < len; i++) {
if(!has(newArray, array[i])) {
newArray.push(array[i]);
}
}
压缩到一个函数里:
function uniqueArray(arr) {
let temp = [];
for (let i = 0; i < arr.length; i++) {
if (temp.indexOf(arr[i]) == -1) {
temp.push(arr[i]);
}
}
return temp;
}
二:ES5中的方法:forEach、indexOf
array.forEach(function(curr) {
if (newArray.indexOf(curr) === -1) {
newArray.push(curr);
}
})
三:ES5中的reduce方法:
newArray = array.reduce((init, curr) => {
if (init.indexOf(curr) === -1) {
init.push(curr);
}
return init;
}, [])
四:ES5中的Array.from()和ES6Set()方法结合:
newArray = Array.from(new Set(array));
五:不推荐的方法:
let set = new Set();
array.forEach(function(curr){
set.add(curr);
});
newArray = Array.from(set);
newArray = Array.from(new Set(array));
我们不管用上述的哪一种方法都会发现newArray里面已经没有重复的值了,我们已经完成了去重。