今天给大家带来的数组中去重的几种方法,以后在清洗数据的时候就可以使用啦
var arr = [2,4,5,7,1,8,30,2,10,1,2];
// 数组去重方法 1
function uniqueArr(arr){
return Array.from(new Set(arr))
};
// 数组去重 2
function uniqueArr2(arr){
return [...new Set(arr)]
};
// 数组去重 3
function uniqueArr3(arr){
var newArr = [];
arr.forEach(item =>{
if (newArr.indexOf(item) == -1) {
newArr.push(item)
}
})
return newArr;
}
function uniqueArr4(arr){
var newArr = [];
newArr = arr.filter((item,index) =>{
return arr.indexOf(item) ===index;
console.log(indexOf(item),index);
});
return newArr
};
function uniqueArr5(arr){
return arr.reduce((pre,item) =>{
return pre.includes(item) ? pre : [...pre,item]
},[]);
};
function uniqueArr6(arr){
let obj ={};
arr.forEach((item,index) =>{
obj[arr[index]] = '';
});
obj = Object.keys(obj).map(item => ~~item)
return obj
}
// 有Bug存在,待完善
function uniqueArr7(arr){
let newArr = [];
for (let i = 0; i < arr.length; i++) {
for (let j = i+1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
i++;
}
}
newArr.push(arr[i])
}
return newArr
};
function uniqueArr8(arr){
let newArr = [];
let temp = arr.sort();
for (let i = 0; i < temp.length; i++) {
if (temp[i] !== temp[i+1]) {
newArr.push(arr[i])
}
}
return newArr
}
console.log(uniqueArr(arr));
console.log(uniqueArr2(arr));
console.log(uniqueArr3(arr));
console.log(uniqueArr4(arr));
console.log(uniqueArr5(arr));
console.log("数组去重6");
console.log(uniqueArr6(arr));
console.log('数组去重7');
console.log(uniqueArr7(arr));
console.log('数组去重8');
console.log(uniqueArr8(arr));
一。数组中出现item Object完全相同的同属性key-value的对象处理
function uniqueArr(data){
return [...new Set(data.map(item => JSON.stringify(item)))].map(item => JSON.parse(item))
}
二。数组中的item Object中出现部分key值相同去重方法
res.data.rows = [{accountId:'3424233423423',appName:'飞行大战',appPackageList:[{ossId:'https://www.baiodu.com/dsds/img.png',appPackagePath:'com.app.uni'}],appDetail:'dwdw'},{accountId:'3424233423424',appName:'飞行 大战',appPackageList:[{ossId:'https://www.aliyun.com/djsds/erick.png',appPackagePath:'com.app.uni'}],appDetail:'asdw'}];
这时候如何处理呢
function uniqueArr(data){
let map = new Map();
const list = data.filter(item => !map.has(item.appPackagePath) && map.set(item.appPackagePath, 1));
return list;
}
三。数组中的item.key中出现个别属性值为null时的去重;
第一个参数,传入需要去重的数组,第二个参数,传入需要过滤的条件
let filterList = (userList, case) => {
return userList.filter(item => {
return item.enableStatus != "0" //过滤条件
}).map(item => {
item = Object.assign({}, item)
if (item.list) {
item.list = filterList(item.list, "0")
}
return item
})
};