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属性是一个数组,包含了所有具有相同考试编号的对象。
运行结果:

这段代码将具有相同考试编号的CT检查项目进行分组,如CT肺部平扫、CT双髋关节三维成像和CT重建,通过创建新的对象并利用数据结构map和dest进行数据整合。
2057





