合并数组对象中相同的属性值

qq_37010585 2017-04-09 06:34:10
var arr = [

{ a : 1 , b : 1},
{ a : 2 , b : 1},
{ a : 3 , b : 3},
{ a : 1 , b : 1},
{ a : 5 , b : 5}

]
合并属性b转化为:
arr= [

{ a : [ 1 , 2 , 1] , b : 1},

{ a : [3], b : 3},

{ a : [5] , b : 5}

]
...全文
1864 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
似梦飞花 2017-04-09
  • 打赏
  • 举报
回复

var arr = [
            { a : 1 , b : 1},
            { a : 2 , b : 1},
            { a : 3 , b : 3},
            { a : 1 , b : 1},
            { a : 5 , b : 5}
        ];
        arr=arr.map(function(item,index,arr){
           const i=arr.find(_item=>item.b===_item.b);
            if(i!==item){
                i.a.push(item.a);
                return undefined;
            }else{
                i.a=[i.a];
                return i;
            }
        }).filter(item=>item!==undefined);
        console.log(arr);
天际的海浪 2017-04-09
  • 打赏
  • 举报
回复

var arr = [ 
        { a : 1 , b : 1}, 
        { a : 2 , b : 1},  
        { a : 3 , b : 3}, 
        { a : 1 , b : 1}, 
        { a : 5 , b : 5}
]
var tb = [];
var narr = [];
for (var i = 0; i < arr.length; i++) {
	var n = tb.indexOf(arr[i].b);
	if (n==-1) {
		tb.push(arr[i].b);
		narr.push({ a : [arr[i].a] , b : arr[i].b});
	} else {
		narr[n].a.push(arr[i].a);
	}
}
alert(JSON.stringify(narr,null,4));
qq_37010585 2017-04-09
  • 打赏
  • 举报
回复
想了好久也不知道怎么做。。。求教

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧