数组对象去重根据指定属性去重,并拼接上后续的属性值

const arr=[
			{name:'张三',type:'person'},
			{name:'李四',type:'person'},
			{name:'旺财',type:'dog'},
			{name:'小花',type:'cat'},
			{name:'王五',type:'person'}
			]

根据type进行去重,并拼接上后续的name属性值

const tempArr = []
		const newArr = []
		arr.map(item=>{
			if(tempArr.indexOf(item.type) === -1){
				tempArr.push(item.type)
				newArr.push(item)
			}else{
				console.log(newArr[tempArr.indexOf(item.type)])
				newArr[tempArr.indexOf(item.type)].name += item.name
			}
		})

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,可以通过对象属性数组。具体实现方法有两种,一种是使用filter()和indexOf()方法,另一种是使用for循环和includes()方法。 方法一:使用filter()和indexOf()方法 1.先使用filter()方法筛选出复的对象的下标,使用indexOf()方法获取第一次出现的下标。 2.再使用filter()方法根据下标筛选出不复的对象。 方法二:使用for循环和includes()方法 1.使用for循环遍历数组,使用includes()方法判断数组中是否已经存在该对象。 2.如果不存在,则将该对象的id和name属性拼接成一个字符串,添加到一个新的数组中,并将该对象添加到另一个新的数组中。 下面是方法一和方法二的具体实现代码: 方法一: const dataArr = [ { id: 1, name: '名称1' }, { id: 2, name: '名称2' }, { id: 2, name: '名称2' }, { id: 2, name: '名称3' }, { id: 3, name: '名称4' }, { id: 4, name: '名称4' }, { id: 5, name: '名称5' } ] const a = dataArr.map(item => item.id + '-' + item.name) const b = dataArr.filter((item, index) => a.indexOf(item.id + '-' + item.name) === index) console.log(b) // 输出结果: // [ // { id: 1, name: '名称1' }, // { id: 2, name: '名称2' }, // { id: 2, name: '名称3' }, // { id: 3, name: '名称4' }, // { id: 4, name: '名称4' }, // { id: 5, name: '名称5' } // ] 方法二: const dataArr = [ { id: 1, name: '名称1' }, { id: 2, name: '名称2' }, { id: 2, name: '名称2' }, { id: 2, name: '名称3' }, { id: 3, name: '名称4' }, { id: 4, name: '名称4' }, { id: 5, name: '名称5' } ] const arr1 = [] const arr2 = [] for (let i = 0; i < dataArr.length; i++) { if (!(arr1.includes(dataArr[i].id + '-' + dataArr[i].name))) { arr1.push(dataArr[i].id + '-' + dataArr[i].name) arr2.push({ id: dataArr[i].id, name: dataArr[i].name }) } } console.log(arr2) // 输出结果: // [ // { id: 1, name: '名称1' }, // { id: 2, name: '名称2' }, // { id: 2, name: '名称3' }, // { id: 3, name: '名称4' }, // { id: 4, name: '名称4' }, // { id: 5, name: '名称5' } // ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值