在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ js數(shù)組重組

js數(shù)組重組

現(xiàn)在有一個(gè)數(shù)組類似于
var a=[{name:"May",age:12,id:1},{name:"Jone",age:13,id:5},{name:"May",age:15,id:6}];
要把所有name相同的對(duì)象重組,大概成為這樣的數(shù)組
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
}]

}]

回答
編輯回答
骨殘心

lodash庫(kù)的groupBy可以實(shí)現(xiàn)
結(jié)果需要轉(zhuǎn)換一下

2017年6月17日 07:48
編輯回答
巷尾

供參考

Array.from(
  arr.reduce((m, x) => m.set(x.name, [...(m.get(x.name) || []), x]), new Map())
).map(([name, list]) => ({name, list}))
2017年7月25日 14:58
編輯回答
艷骨

分組第一時(shí)間想到的就是利用對(duì)象。。。

var a = [{ name: "May", age: 12, id: 1 }, { name: "Jone", age: 13, id: 5 }, { name: "May", age: 15, id: 6 }];

let obj = {};
let result = [];
a.forEach( (element, index) => {
    if (!obj[element.name]) {
        obj[element.name] = [];
    }
    obj[element.name].push(element);
});

for (let key in obj) {
    result.push({
        name: key,
        list: obj[key]
    }); 
}

console.log(result);
2018年9月23日 16:06
編輯回答
薄荷綠

可以參考這個(gè)
https://segmentfault.com/a/11...

2017年5月23日 14:07
編輯回答
萌二代

如果你用了lodash的話,它有個(gè)groupBy的函數(shù),應(yīng)該復(fù)合你的要求
lodash.groupBy

 let group=_.groupBy([],(item)=>item.name))
2017年4月27日 12:09
編輯回答
柒槿年

有必要非要前端來(lái)操作這數(shù)據(jù)格式轉(zhuǎn)化?
可以是可以,只是js不太適合。
一般后端給的數(shù)據(jù)不符合前端的,那么后端有義務(wù)要改,如果有中間層bff的話,這種事應(yīng)該讓他們處理。
前端的工作職責(zé)是接收數(shù)據(jù)=>展示數(shù)據(jù)
工作內(nèi)容分清楚,后期才不會(huì)留太多坑

2018年1月17日 23:33
編輯回答
吢丕

自己手寫了一個(gè),寫的比較粗糙,但是可以看一下~有哪位大神可以提供更優(yōu)化的寫法?

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中的數(shù) 添加進(jìn)去
                    for( var j = 0; j < newArr.length; j++ ){
                        if( arr[i].name == newArr[j].name ){
                            newArr[j].list.push(arr[i].name);
                        }
                    }
                }
            }

            return newArr;
        }
2017年7月12日 14:24
編輯回答
不將就

花了20分鐘才寫出來(lái),感覺(jué)自己好菜。

var a=[{name:"May",age:12,id:1},{name:"Jone",age:13,id:5},{name:"May",age:15,id:6}];
var b = [];
for(let index_a in a){
    //console.log(a[index_a]);
    if(index_a == 0){
        b.push({
            name:a[index_a].name,
            list:[a[index_a]]
        });
    }
    for(let index_b in b){
        if(b[index_b].name == a[index_a].name && index_a>0){
            b[index_b].list.push(a[index_a]);
        }else{
            var boo = false;
            for(let index_c in b){
                if(b[index_c].name==a[index_a].name){
                     boo = true;
                }
            }
            if(!boo){
                b.push({
                    name:a[index_a].name,
                    list:[]
                });
            }
            
        }
    }
};
console.log(b);
2017年11月9日 07:36
編輯回答
涼薄
const users = [{ name : "May", age : 12, id : 1 }, { name : "Jone", age :13, id : 5 }, { name : "May", age : 15, id : 6 }];

function distinctUsers(users) {
    return users.reduce((users, user) => {
        if (!users.filter(({ name }) => user.name === name)[0]) {
            users.push(user);
        }
        
        return users;
    }, []);
}

distinctUsers(users);
// => [{"name":"May","age":12,"id":1},{"name":"Jone","age":13,"id":5}]
2018年9月9日 01:44
編輯回答
亮瞎她
const a = [{ name: "May", age: 12, id: 1 }, { name: "Jone", age: 13, id: 5 }, { name: "May", age: 15, id: 6 }]

let result = Object.values(a.reduce((m, n) => {
    if (!m[n.name]) {
        m[n.name] = {name: n.name, list: []}
    }
    m[n.name].list.push(n)
    return m
}, {}))

console.log(result)
2017年6月22日 02:37