封装去重的方法
封装的方法
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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现