数组对象根据对象中指定的属性去重?你知道多少
栏目: JavaScript · 发布时间: 7年前
内容简介:有一天有一个朋友给我发来消息 “数组对象根据对象中指定的属性去重?让我写写看”,看到这个的时候我有点懵逼,好像不太会。我只能咬着牙硬着头皮死磕,差点从入门到放弃,在朋友一步一步指导下面终于写好了,朋友总结好了发了我一份,本着自愿共享的精神。过来两天我就把这个给忘了在项目中刚好遇到这个东西,那时候脑子仅剩一点点的思路,努力回想时却早已记忆模糊。很无奈呀,怎么办?项目开发需要,硬着头皮又找朋友要了一份哈哈。现在我决定我要建立一个自己的
有一天有一个朋友给我发来消息 “数组对象根据对象中指定的属性去重?让我写写看”,看到这个的时候我有点懵逼,好像不太会。
我只能咬着牙硬着头皮死磕,差点从入门到放弃,在朋友一步一步指导下面终于写好了,朋友总结好了发了我一份,本着自愿共享的精神。过来两天我就把这个给忘了
在项目中刚好遇到这个东西,那时候脑子仅剩一点点的思路,努力回想时却早已记忆模糊。很无奈呀,怎么办?项目开发需要,硬着头皮又找朋友要了一份哈哈。现在我决定我要建立一个自己的 js
小仓库,里面就放我不懂的,有事没事去翻翻,温故
喜欢和朋友交流,偶尔会抛一些技术问题给我,我不会,每次都在指导下慢慢的一步一步明白懂了,顺便学到了新知识。哈哈一起学习进步,欢迎技术交流
问题:数组对象根据对象中指定的属性去重?
方法一: reduce
方法
function unique(arr,u_key){
let obj = {}
arr.reduce((prev,next)=>{
obj[next[u_key]+typeof next[u_key]] ? '' :
obj[next[u_key]+typeof next[u_key]] = true && prev.push(next)
return prev
},[])
}
复制代码
push
方法是返回新数组的长度,&& 返回的是后面那个值,而我们需要的是一个第一次执行的数组对象,所以另写了一行 return prev
方法二: 计数器原理
function unique(arr,u_key){
let result = []
result[0] = arr[0]
arr.forEach((meta_item,i)=>{
//声明计数变量,如果源数组中的一个对象和result结果数组中的所有对象不同,就push
let num = 0
result.forEach((r_item,j)=>{
if (meta_item[u_key]!==r_item[u_key]) {
num++
}
if (num === result.length) {
result.push(meta_item)
}
})
})
return result
}
复制代码
方法三 : 简单粗暴循环,利用原理是对象的同名属性会被覆盖(和第一种方法有点像)
function unique(arr,u_key) {
let obj = {}
let result = []
arr.forEach(item=>{
let typeof_key = typeof item[u_key] + item[u_key]
obj[typeof_key] = item
})
for (let key in obj) {
result.push(obj[key])
}
return result
}
复制代码
测试案例
let arrayList = [{
id:'1',
name:'one'
},{
id:'2',
name:'tow',
},{
id:'3',
name:'three'
},{
id:'1',
name:'one'
},{
id:2,
name:'tow',
},{
id:'3',
name:'three'
}]
unique(arrayList,'id')
复制代码
来自萌新的瑟瑟发抖,如有不对之处,希望可以指出,如果有其他的更好的方法,期待可以学习交流
以上所述就是小编给大家介绍的《数组对象根据对象中指定的属性去重?你知道多少》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Haskell School of Music
Paul Hudak、Donya Quick / Cambridge University Press / 2018-10-4 / GBP 42.99
This book teaches functional programming through creative applications in music and sound synthesis. Readers will learn the Haskell programming language and explore numerous ways to create music and d......一起来看看 《The Haskell School of Music》 这本书的介绍吧!
随机密码生成器
多种字符组合密码
HEX CMYK 转换工具
HEX CMYK 互转工具