js 循环删除数组中指定的或符合条件的对象或重复的对象

一般删除数组中的某个对象或元素,我们会用到splice,如:

const arr = [1, 2, 3, 4, 5]
arr.splice(0, 1) // [2, 3, 4, 5]

如果要删除某个指定的对象或元素,如,删除3:

const arr = [1, 2, 3, 4, 5]
arr.splice(arr.findIndex(item => item === 3), 1) // [1, 2, 4, 5]

但是,如果要循环删除数组里的某个对象要如何操作呢?如下数组:

const arr = [
	{ name: '北京' },
    { name: '北京' },
    { name: '上海' },
    { name: '广州' },
    { name: '深圳' }
  ]

方法一:Set

const uniqueArr = [...new Set(arr.map(JSON.stringify))].map(JSON.parse);
console.log(uniqueArray);

方法二:filter

let uniqueArray = arr.filter((obj, index, self) =>
  index === self.findIndex((o) =>
    o.name === obj.name
  )
);
console.log(uniqueArray);

注意:
第一种方法使用了JSON.stringify和JSON.parse,这适用于对象中只包含基本数据类型(如字符串、数字、布尔值等)的情况。如果对象中包含其他对象或函数,这种方法可能不起作用。

第二种方法需要你指定一个属性(yourProperty)来比较对象的唯一性。你需要根据你的对象结构选择一个合适的属性来比较。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值