js数组去重,交集,差集,内部位置交换

let arr1 = [
  {
    id: 1,
    name: "zs",
  },
  {
    id: 2,
    name: "ls",
  },
];
let arr2 = [
  {
    id: 2,
    name: "ls",
  },
  {
    id: 4,
    name: "ww",
  },
  {
    id: 4,
    name: "xz",
  },
];

1.去重

1.1基本数据类型

[...new Set()] 

1.2.复杂数据类型,根据某一个属性是否重复

// initial为初始值, 当前初始值为[], current是当前元素
var obj = {};
let result = arr2.reduce( (initial, current)=> {
     obj[current.id] ? '' : obj[current.id] = true && initial.push(current);
     return initial;
}, []);

2.交集

let newArray = arr1.filter(item => arr2.some(each => each.id == item.id))

3.差集

let newArray = arr1.filter(item => arr2.every(each => each.id !== item.id))

4.位置交换

let arr = [{ key: 1 }, { key: 2 },{ key: 3 },{ key: 4 }]
let index = arr.findIndex(item => item.key == 2)
let value = arr.find(item => item.key == 2)
//上移动
arr.splice(index, 1)   //先删除
arr.splice(index - 1, 0, value) //后添加
//下移动
arr.splice(index, 1)   //先删除
arr.splice(index + 1, 0, value) //后添加
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值