js 数组中根据每个对象的属性,相同的属性值进行重组

var jcxm = [{"examNo":"0005327886","name":"CT肺部平扫"},{"examNo":"0005327887","name":"CT双髋关节三维成像"},{"examNo":"0005327886","name":"CT重建"}];
var map = {};
var dest=[];
for(var i = 0; i < jcxm.length; i++){
	var ai = jcxm[i];
	if(!map[ai.examNo]){
		dest.push({
			examNo: ai.examNo,
			data: [ai]
		});
		map[ai.examNo] = ai;
	}else{
		for(var j = 0; j < dest.length; j++){
			var dj = dest[j];
			if(dj.examNo == ai.examNo){
				dj.data.push(ai);
				break;
			}
		}
	}
}
console.log(dest);

代码解释:

这段代码的功能是对数组jcxm进行重组。初始状态下,jcxm是一个包含多个对象的数组。每个对象都有两个属性:examNo表示考试编号,name表示考试名称。

代码中的map对象用于存储已经遍历过的考试编号,以及对应的考试对象。dest数组用于存储最终的结果。代码通过遍历数组jcxm,判断每个考试编号是否已经在map对象中存在。

如果遍历到的考试编号不在map中,则创建一个新的对象,将遍历到的考试编号和对应的对象放入该对象中,并将该对象放入dest数组中。同时,将该考试编号和对象存入map中。

如果遍历到的考试编号已经在map中存在,则通过遍历dest数组来找到该考试编号对应的对象,并将当前遍历到的对象放入该已存在对象的data数组中。

最终的结果是将具有相同考试编号的对象组合在一起,放入dest数组中。例如,如果有两个对象的考试编号都为"0005327886",则它们会被组合在一起,放入dest数组中的一个元素中。

经过以上步骤,dest数组中的元素是根据考试编号进行了分组的对象,每个对象的data属性是一个数组,包含了所有具有相同考试编号的对象。

运行结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值