js合并数组相同key值的项
2026/9/16 23:35:00 网站建设 项目流程

之前的回答答案,被点赞了,都快忘了,恰巧自己曾经也用到过,今日记录一下笔记。

原楼主问题:

var arr=[ {a:3,b:4}, {a:3,b:7}, {a:5,b:2}, {a:5,b:1} ]

怎样合并为:

var arr=[ {a:3,b:4,7}, {a:5,b:2,1} ]

答:

filterRoomNames:function(roomNames){ console.log(roomNames); var allRoom = {}; if(roomNames.length>0){ for(var i=0;i<roomNames.length;i++){ var map = roomNames[i]; for(var k in map){ //console.log(k+','+map[k]); if(k!=null && k!='null'){ if(allRoom.hasOwnProperty(k)){ //true allRoom[k]+= ','+map[k]; }else{ allRoom[k]=map[k]; } } } } } console.log(allRoom); }
解释:上方代码中为吾封装的一个过滤合并的方法,关于roomNames参数是一个数组集合,此数组集合中的json数据如下:
0: {null: "zhang3"} 1: {19-1907: "li4"} 2: {19-1908: "wang5"} 3: {null: "aa"} 4: {null: "bb"} 5: {null: "cc"} 6: {19-1904: "tt"} 7: {19-1904: "tl"} 8: {19-1904: "ty"} 9: {null: "tu"} 10: {null: "uc"} 11: {null: "kj"} 12: {19-1902: "km"} 13: {19-1901: "gc"} 14: {null: "gh"} 15: {null: "gk"}
最终合并输出如下:
{19-1907: "li4", 19-1908: "wang5", 19-1904: "tt,tl,ty", 19-1902: "km", 19-1901: "gc"}

主要关键在于map的key特性及判断key是否存在,再如此类可以此作为参考。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询