素材牛VIP会员
js数组重组
 10***19  分类:JavaScript  人气:2232  回帖:11  发布于6年前 收藏

现在有一个数组类似于
var a=[{name:"May",age:12,id:1},{name:"Jone",age:13,id:5},{name:"May",age:15,id:6}];
要把所有name相同的对象重组,大概成为这样的数组
var b = [{

name: "May",
list: [{
    name: "May",
    age: 12,
    id: 1
}, {
    name: "May": age: 15,
    id: 6
}]

}, {

name: "Jone",
list: [{
    name: "Jone",
    age: 13,
    id: 5
}]

}]

 标签:es6javascript

讨论这个帖子(11)垃圾回帖将一律封号处理……

Lv3 码奴
lj***10 Linux系统工程师 6年前#1

自己手写了一个,写的比较粗糙,但是可以看一下~有哪位大神可以提供更优化的写法?

var a=[{name:"May",age:12,id:1},{name:"Jone",age:13,id:5},{name:"May",age:15,id:6}];
        function createNewArray ( arr ){
            var nameTempArr = [];
            var newArr = [];
            for (var i = 0; i < arr.length; i++ ){
                if (nameTempArr.indexOf(arr[i].name) == -1 ){
                    nameTempArr.push(arr[i].name);
                    var obj = {};
                    obj.name = arr[i].name;
                    obj.list = [];
                    obj.list.push(arr[i]);
                    newArr.push(obj);
                }else{
                    //遍历newArr中的数 添加进去
                    for( var j = 0; j < newArr.length; j++ ){
                        if( arr[i].name == newArr[j].name ){
                            newArr[j].list.push(arr[i].name);
                        }
                    }
                }
            }

            return newArr;
        }
上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取