首页 > 编程语言 >javascript 数组对象根据id去重的几种方法

javascript 数组对象根据id去重的几种方法

时间:2023-10-20 16:57:04浏览次数:37  
标签:el arr javascript some find 数组 next id

例如:想去除重复id为1的项

arr = [
{ id: 1, name: '张三', age: 20 },
{ id: 1, name: '张三', age: 20 },
{ id: 2, name: '李四', age: 20 },
{ id: 3, name: '马五', age: 20 },
];

方法一

通过forEach再通过some方法判断数组是否包含当前对象id,不包含则添加

some() {
let some: any = [];
this.arr.forEach(el => {
if (!some.some(e => e.id == el.id)) {
some.push(el);
}
});
console.log(some);
}

方法二

通过forEach再通过find方法判断数组是否包含当前对象id,不包含则添加

find() {
let find: any = [];
this.arr.forEach(el => {
if (!find.find(e => e.id == el.id)) {
find.push(el);
}
});
console.log(find);
}

 

方法三

通过reduce方法,通过定义的obj,判断obj[next.id] 是否存在,存在设置为“”,不存在则push

reduce() {
let obj = {};
let reduce = [];
reduce = this.arr.reduce(function(item, next) {
//item为没有重复id的数组,next为当前对象
obj[next.id] ? '' : (obj[next.id] = true && item.push(next));
return item;
}, []);
console.log(reduce);
}

 

方法四

通过for循环遍历,再通过some方法判断数组是否包含当前对象id,不包含则添加

forAway() {
let forData = [];
for (let i = 0; i < this.arr.length; i++) {
if (!forData.some(e => e.id == this.arr[i].id)) forData.push(this.arr[i]);
}
console.log(forData);
}
————————————————
原文链接:https://blog.csdn.net/weixin_43953518/article/details/124928893

标签:el,arr,javascript,some,find,数组,next,id
From: https://www.cnblogs.com/gwkzb/p/17777497.html

相关文章

  • xxl-job执行java任务报错: unable to find valid certification path to requested tar
    1、错误:xxl-job调用https接口显示证书验证失败[错误信息:sun.security.validator.ValidatorException:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget]2023-10-2015......
  • 【C语言基础】sizeof(数组名)
    C语言数组名容易在以下两种情况混淆。情况1:数组名——代表数组整体inta[]={1,2,3,4};printf("%d\n",sizeof(a));//数组名a表示整个数组的大小,元素类型int,有4个元素,所以大小为4×4=16 情况2:数组名——代表一个指针当数组名作为函数参数时,自动退化为一个指针。此......
  • Jetbrain Idea 美化
    基于Idea2023.2.31.配色永远不要相信一个用亮色主题的人。AtomOneDarkTheme|示例图:base16-taptap-scheme|示例图:NewDark|示例图:2.字体选择在MonoLisa和PragmataPro中犹豫了很久,最终选择了MonoLisa。MonoLisa和PragmataPro都做了非常多的对于......
  • PHP将数组通讯录按字母A-Z排序
    1.调用publicfunctiontest(){$volist=Db::name("user")->select();$list=$this->chartSort($volist);} 2.具体方法/***将数组按字母A-Z排序*@return[type][description]*/publicfunctionchartSort($user){foreach(......
  • android ebpf初体验实现文件重定位
    之前通过修改内核插桩并编写内核模块的方式hookdo_sys_open函数(这种方式有点像tracepoint,都属于静态探测),这种方式优点是可以hook内核中的任意函数,但是需要编译内核和驱动模块较为麻烦。eBPF相当于在内核中定义了一个虚拟机,能够加载eBPF字节码并依赖kprobe,uprobe,tracepoint实现......
  • 88. 合并两个有序数组
    给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初......
  • 把数组中相同id的项放到一个数组中
    vararr=[{'id':'1001','name':'值1','value':'111'},{'id':'1001','name':'值1','va......
  • android 友盟SNS_SDK为Android应用加入SNS分享、同步功能
    使用友盟SNS_SDK为Android应用加入SNS分享、同步功能很多朋友在开发Android应用的过程中,都想加入社会化的分享功能,如将自己的应用使用状态或心得同步到新浪微博、人人网或腾讯微博等。这些社交网络或微博都已经发布了针对开发者的开放平台(关于开放平台的相关信息,请参考《说说微......
  • SOLIDWORKS焊件模型快速进行属性反写
    SOLIDWORKS焊件模块是一个非常好用的模块,在SOLIDWORKS中,焊件模型是一个多实体零件,但实际上每个实体都代表着一个零件,相比于装配体来说,多实体焊件模型更易于管理与修改,因此焊件功能深受广大工程师们的喜爱。使用焊件建模非常简便,只需要绘制草图,选择结构构件即可。而且焊件还带有焊......
  • IDEA快捷键的使用
    IDEA快捷键的使用1.通用型说明快捷键复制代码-copyctrl+c粘贴-pastectrl+v剪切-cutctrl+x撤销-undoctrl+z反撤销-redoctrl+shift+z保存-saveallctrl+s全选-selectallctrl+a2.提升开发效率第2组:提高编写速度(上)说......