封装的方法
1.去除同一数组中对象属性相同的对象
fn(array, key) {
let seen = new Set();
return array.filter((item) => {
let k = key(item);
return seen.has(k) ? false : seen.add(k);
});
},
const arr=[{id:1,n:'nice'},{id:1,n:'wow'}]
this.fn(arr,item=>item.id);
output:[{id:1,n:'nice'}]
2.往数组中添加对象,有就覆盖,没有就添加。
formateArrObjData(initialArr, obj, pro) {
// 判定数据是否为数组
if (!(initialArr instanceof Array)) {
return "请传入正确格式的数组";
}
// 判定数据是否为对象
if (!(obj instanceof Object)) {
return "请传入正确格式的对象";
}
if (!pro) {
return "请传入正确格式的属性名";
}
let index = initialArr.findIndex((val) => val[pro] === obj[pro]);
// 如果有就替换 没有就添加
let tempArr = initialArr;
if (initialArr.findIndex((val) => val[pro] === obj[pro]) !== -1) {
tempArr.splice(index, 1, obj);
} else {
tempArr.push(obj);
}
// console.log(obj, "obj");
// console.log(tempArr, "tempArr");
return tempArr;
},
3.数组去重
(一个数组包含所有,一个数组包含部分,求不包含的部分)
- 方法 1(some+filter)
var Array1 = [1,2,3,4,5]
var Array2 = [1,2]
var Array3 = Array1.filter((item1)=>{
return !Array2.some((item2)=>(item2 == item1))
})
console.log(Array3) [3,4,5]
函数封装
function filterArray(arr1, arr2) {
return arr1.filter((v) => return ! arr2.some((val)=>(v == val))
},
- 方法 2(every+filter)
let arr1 = [
{id:1,name'小明',age:18},
{id:2,name'小猪',age:12},
{id:3,name'小红',age:16},
{id:4,name'小紫',age:22},
{id:5,name'小绿',age:20},
]
let arr2 =[
{pid:2,sex:女},
{pid:5,sex:男},
]
//函数封装
function deWeight(arr1, arr2) {
return arr1.filter((v) => arr2.every((val) => val.id!= v.pid));
},
//调用
let majorList = this.deWeight(arr1,arr2)
console.log(majorList);
标签:return,val,封装,filter,let,obj,方法,id
From: https://www.cnblogs.com/hxy--Tina/p/16866222.html