JS数组去重
简单数组去重:
{
const a = [1, 3, 4, 1, 5, 2, 6, 7, 8, 3]
const b = a.filter((item, index, self) => self.indexOf(item) === index)
console.log(b) //[1, 3, 4, 5, 2, 6, 7, 8]
}
实例1根据indexOf去重,indexOf的好处就是返回的是首次出现的位置,这样后面即使出现的值一样,也只能返回第一次出现的索引,当然这个只适用于简单的数组
对象数组去重:
const objArr = [{
name: '名称1'
},{
name: '名称2'
},{
name: '名称3'
},{
name: '名称1'
},{
name: '名称2'
}]
const obj = {}
const newObjArr = []
for(let i = 0; i < objArr.length; i++){
if(!obj[objArr[i].name]){
newObjArr.push(objArr[i]);
obj[objArr[i].name] = true
}
}
console.log(newObjArr)
结果为:
[{
name: '名称1'
},{
name: '名称2'
},{
name: '名称3'
}]
还可以用reduce来处理,如下:
const objArr = [{
name: '名称1'
},{
name: '名称2'
},{
name: '名称3'
},{
name: '名称1'
},{
name: '名称2'
}]
const obj = {}
const newObjArr = objArr.reduce((prev, curr)=>{
obj[curr.name] ? true : obj[curr.name] = true && prev.push(curr);
return prev
}, [])
console.log(newObjArr)
结果为:
[{
name: '名称1'
},{
name: '名称2'
},{
name: '名称3'
}]
两个数组之间去重:
var arr3 = [{
id: 1,
name: 'lily'
}, {
id: 2,
name: 'hz'
}, {
id: 3,
name: '123'
}, {
id: 4,
name: '321'
}, {
id: 5,
name: 'aa'
}]
var other = [{
id: 1,
name: 'lily'
}, {
id: 2,
name: 'hz'
}]
isOther = (x, arr) =>{
for(var i = 0;i<arr.length;i++){
if(x === arr[i].id){
return true;
}
}
return false;
}
console.log(arr3.filter((item)=>!isOther(item.id, other)));
结果为:
[{
id: 3,
name: '123'
}, {
id: 4,
name: '321'
}, {
id: 5,
name: 'aa'
}]
上面例子中,在数组arr3去除掉跟数组isOther中相同的元素,把不存在在isOther数组中的元素筛选出来
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架