ES6数组对象去重取重

1、单数组,自身去重

let data = ["张三","李四","王五","赵六","张三","田七"]
let set = new Set(data)
console.log(set)

2、单数组对象,自身去重

let data = [
  {id:1,name:"张三"},
  {id:2,name:"李四"},
  {id:1,name:"王五"},
  {id:4,name:"赵六"},
  {id:5,name:"孙七"},
]
let obj = {}
let set = data.reduce((cur,next) => {
  obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
  return cur;
},[]) 
//这里演示的是:如果有相同id,就去掉
console.log(set) 

3、合并两个数组,并去重

let a = [1,2,3];
let b = [1,3,5,6];
let c = [...new Set([...a,...b])]
console.log(c)

4、合并两个数组对象,并去重

let arr1 = [
  {id:1,name:"张三"},
  {id:2,name:"李四"},
  {id:3,name:"王五"},
  {id:4,name:"赵六"},
  {id:5,name:"孙七"}
]
let arr2 = [
  {id:1,name:"张三"},
  {id:2,name:"李四"},
  {id:6,name:"陈八"},
]
let newArr = [...arr1, ...arr2]
let obj = {}
let result = newArr.reduce((item, next) => {
  obj[next.id] ? '' : obj[next.id] = true && item.push(next)
  return item
}, [])
console.log(result)

5、去重:两个数组对象A,B,获取A中减去含有B的部分

let a = [
  {id:1,name:"张三"},
  {id:2,name:"李四"},
  {id:3,name:"王五"},
  {id:4,name:"赵六"},
  {id:5,name:"孙七"}
]
let b = [
  {id:1,name:"张三"},
  {id:2,name:"李四"},
  {id:3,name:"王五"},
]
b.map(item=>{ 
  a = a.filter(item2 => item2.id != item.id);
})
console.log(a)

6、取重:两个数组对象A,B,获取A中含有B的部分

//情况1
let arr1 = [
  {id:1,name:"张三"},
  {id:2,name:"李四"},
  {id:3,name:"王五"},
  {id:4,name:"赵六"},
  {id:5,name:"孙七"}
];
let arr2 = [1,2,3]
let obj= arr1.filter(item => arr2.indexOf(item.id) > -1)
console.log(obj)

//情况2
let arr1 = [
  {id:1,name:"张三"},
  {id:2,name:"李四"},
  {id:3,name:"王五"},
  {id:4,name:"赵六"},
  {id:5,name:"孙七"}
];
let arr2 = [
  {id:1,name:"张三"},
  {id:2,name:"李四"},
  {id:3,name:"王五"},
]
let obj= arr1.filter(item => arr2.some(item2=>item2.id == item.id))
console.log(obj)

学到了就要教人,赚到了就要给人,互相学习,共同进步。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在ES6中对数组对象进行去重,有几种方法可以实现。 方法一是使用filter()方法和findIndex()方法。首先使用filter()方法返回一个新的数组,其中包含满足条件的唯一元素。然后使用findIndex()方法来检查新数组中是否已存在当前元素。如果不存在,则将其添加到新数组中。这种方法适用于简单的对象数组去重操作。 方法二是使用reduce()方法。reduce()方法可以对数组进行迭代,并返回一个累积值。在这种情况下,我们可以使用reduce()方法来遍历数组并构建一个新数组,其中没有重复的元素。可以通过检查每个元素是否在累积值中出现来实现去重。 另外,还可以使用ES6中新增的Set数据结构来进行去重。Set是一种值的集合,它只能存储唯一的值。可以将数组转换为Set,然后再将Set转换回数组。这样就可以去除重复的元素。 下面是一个示例代码,演示了如何使用reduce()方法实现数组对象去重: ```javascript let person = [ {id: 0, name: "小明"}, {id: 1, name: "小张"}, {id: 2, name: "小李"}, {id: 3, name: "小孙"}, {id: 1, name: "小周"}, {id: 2, name: "小陈"}, ]; let hasObj = {}; person = person.reduce((cur, next) => { hasObj[next.id ? "" : (hasObj[next.id = true && cur.push(next)); return cur; }, []); console.log(person); // 输出: [{"id": 0,"name": "小明"}, {"id": 1,"name": "小张"}, {"id": 2,"name": "小李"}, {"id": 3,"name": "小孙"}] ``` 以上是几种常用的方法来实现ES6数组对象去重的方式。可以根据具体的需求选择其中适合的方法进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值