数组根据去重

<div id="app"></div>
var jsonArr = [
	{
		id: 1,
		name: '苹果',
		price: 3,
	},
	{
		id: 2,
		name: '苹果',
		price: 5,
	},
	{
		id: 3,
		name: '梨子',
		price: 6,
	},
	{
		id: 4,
		name: '苹果',
		price: 5,
	},
	{
		id: 5,
		name: '苹果',
		price: 5,
	},
	{
		id: 6,
		name: '梨子',
		price: 6,
	}
];
/**
 * @param {Object} data 需要去重的数组
 * @param {Object} name 去重的关键字
 * @param {Object} update 返回新数组的健名 Array() 数组格式
 * return 返回json数组格式的数据
 */
let groudFun = function(data, name, update) {
	if(!data) return '未传入数组';
	if(!name) return '未传入关键字';
	if(!update) return '未传入新数组健名';
	let arr = [].concat(data);
	data.map((item, index) => {
		for(let i=index+1; i<arr.length; i++) {
			let items = data[i];
			if(index != i) {
				if(item[name] == items[name]) {
					arr.splice(i,1)  //相同的字段只保留第一个,其余的全部删除
				}
			}
		}
	});
	let arr2 = [];
	arr.map(item=>{
		arr2.push(item[name])  //将去重的数组,name字段的值单独存放在arr2中
	});
	let obj = {};
	arr2.map(item=>{
		let as = [];
		data.map((items, index) => {
			if(item == items[name]){
				let objs = {}
				update.map(ups=>{
					objs[ups] = items[ups];  //根据传入的update数组的值,作为健名添加到objs对象中
				})
				as.push(objs);
			}
		});
		obj[item] = as;  //将每一次遍历得到的json数组存入obj中
	});
	return obj  //返回处理好的obj对象
}
let newArry = groudFun(jsonArr, 'name', ['price', 'id']);
document.write(JSON.stringify(newArry));
console.log(newArry);
// 根据name去重,然后将所有name相同数据中的price、id字段提出来重组为新的数组: 
// {"苹果":[{"price":3,"id":1},{"price":5,"id":2},{"price":5,"id":4},{"price":5,"id":5}],"梨子":[{"price":6,"id":3},{"price":6,"id":6}]}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DevilAngelia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值