javascript - Bagaimana untuk menggabungkan nilai kunci yang sama dari objek tatasusunan dan meletakkan id yang sepadan ke dalam tatasusunan
ringa_lee
ringa_lee 2017-06-26 10:57:10
0
2
1462

Sebagai contoh data lama:
var lama = [

{
    id: 1,
    name: 'css',
    type: 'html'
},
{
    id: 2,
    name: 'css',
    type: 'html'
},
 {
    id: 3,
    name: 'javacript',
    type: 'code'
},
{
    id: 4,
    name: 'javacript',
    type: 'code'
}

]
Var baharu yang dikehendaki = [

{
    id: [1,2],
    name: 'css',
    type: 'html'
},
 {
    id: [3,4],
    name: 'javacript',
    type: 'code'
},

]
Saya berharap dapat menggabungkan objek dengan nama yang sama dan meletakkan id yang sepadan ke dalam tatasusunan

ringa_lee
ringa_lee

ringa_lee

membalas semua(2)
滿天的星座
var hash = {};
var i = 0;
var res = [];
old.forEach(function(item) {
    var name = item.name;
    hash[name] ? res[hash[name] - 1].id.push(item.id) : hash[name] = ++i && res.push({
        id: [item.id],
        name: name,
        type: item.type
    })

});
console.log(JSON.stringify(res))
刘奇

Dari susunan old di bawah

var old = [
    {
        id: 1,
        name: 'css',
        type: 'html'
    },
    {
        id: 2,
        name: 'css',
        type: 'html'
    },
     {
        id: 3,
        name: 'javacript',
        type: 'code'
    },
    {
        id: 4,
        name: 'javacript',
        type: 'code'
    }
]

Dapatkan new

var new = [
    {
        id: [1,2],
        name: 'css',
        type: 'html'
    },
     {
        id: [3,4],
        name: 'javacript',
        type: 'code'
    }
]

Tercapai

var isEqual = (a, b) => a.name === b.name && b.type === b.type; 
var create = e => {
    e.id = [e.id]; 
    return e; 
}

var getNew = old => old.reduce((acc, cur) => {
    let hasItem = acc.some(e => {
        let temp = isEqual(e, cur); 
        if (temp) e.id.push(cur.id); 
        
        return temp; 
    });
    
    if (!hasItem) acc.push(create(cur))
    
    return acc; 
}, []);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!