js数组对象去重

有两个数组对象,需要将他们合并为一个对象,并且根据工号去重,如下所示:

let arr = [
	{ jobNo: '1', name: '张三'}
	{ jobNo: '2', name: '李四'}
	{ jobNo: '3', name: '王五'}
	{ jobNo: '4', name: '宋六'}
]

let arr1 = [
	{ jobNo: '4', name: '宋六'}
	{ jobNo: '5', name: '宋江'}
	{ jobNo: '6', name: '武松'
]

方法如下所示:

方式一:Map(),最方便

const arrs = [...arr, ...arr1]
const map = new Map()
for (const item of arrs) {
	if (!map.has(item.jobNo)) {
		map.set(item.jobNo, item)
	}
}
// target为最终结果
cosnt target = [...map.values()]

当然还有好几种方法,比如ES5的冒泡排序,双层for循环加上Array.splice()方法;再比如forEach搭配Array.every()方法等等,很多,我还是最喜欢使用Map方式,无论是数组还是数组对象,都能够很好的去重。在这里就不一一详写,冒泡排序方法如下所示:

冒泡排序

for (var i = 0; i < arrs.length - 1; i++) {
        for (var j = i + 1; j < arrs.length; j++) {
            if (arrs[i].name == arrs[j].name) {
                arrs.splice(j, 1);
                //因为数组长度减小1,所以直接 j++ 会漏掉一个元素,所以要 j--
                j--;
            }
        }
    }
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值