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

鍍金池/ 問答/HTML/ JavaScript的數(shù)組對象合并問題求助

JavaScript的數(shù)組對象合并問題求助

如下代碼中,根據(jù)我自己寫的方法進(jìn)行合并,得到的結(jié)果并不是我想要的,我該如何進(jìn)行修改和完善才能得到想要的結(jié)果呢?
先看我的代碼:

var prd = {
    "id": 1,
    "department_id": 42,
    "products": [{
            "id": 12,
            "item_id": 676,
            "name": "49da",
            "price": 78,
            "grouped_addons": [{
                "addons": [{
                        "id": "0_0_40",
                        "name": "rice",
                        "qty": 0,
                        "unit_price": "5.00"
                    },
                    {
                        "id": "0_0_41",
                        "name": "what",
                        "qty": 1,
                        "unit_price": "15.00"
                    }
                ]
            }]
        },
        {
            "id": 12,
            "name": "49da",
            "price": 90,
            "item_id": 677,
            "grouped_addons": [{
                "addons": [{
                    "id": "0_0_40",
                    "name": "rice",
                    "qty": 0,
                    "unit_price": "5.00"
                }, {
                    "id": "0_0_41",
                    "name": "what",
                    "qty": 1,
                    "unit_price": "15.00"
                }]
            }]
        },
        {
            "id": 42,
            "name": "345dd",
            "item_id": 678,
            "grouped_addons": [{
                "addons": [{
                    "id": "0_0_42",
                    "name": "rice",
                    "qty": 0,
                    "unit_price": "5.00"
                }, {
                    "id": "0_0_43",
                    "name": "what",
                    "qty": 1,
                    "unit_price": "15.00"
                }]
            }]
        },
        {
            "id": 48,
            "name": "33ffg",
            "item_id": 679,
            "price": 90,
            "grouped_addons": [{
                "addons": [{
                    "id": "0_0_44",
                    "name": "rice",
                    "qty": 0,
                    "unit_price": "5.00"
                }, {
                    "id": "0_0_45",
                    "name": "what",
                    "qty": 1,
                    "unit_price": "15.00"
                }]
            }]
        },
        {
            "id": 48,
            "name": "33ffg",
            "item_id": 680,
            "price": 100,
            "grouped_addons": [{
                "addons": [{
                    "id": "0_0_44",
                    "name": "rice",
                    "qty": 4,
                    "unit_price": "5.00"
                }, {
                    "id": "0_0_45",
                    "name": "what",
                    "qty": 3,
                    "unit_price": "15.00"
                }]
            }]
        },
        {
            "id": 48,
            "name": "33ffg",
            "price": 200,
            "item_id": 681,
            "grouped_addons": [{
                "addons": [{
                    "id": "0_0_44",
                    "name": "rice",
                    "qty": 4,
                    "unit_price": "5.00"
                }, {
                    "id": "0_0_45",
                    "name": "what",
                    "qty": 1,
                    "unit_price": "15.00"
                }]
            }]
        }
    ]
}
var mp = prd.products.reduce((obj, item) => {
        if (!obj[item.id]) {
            obj[item.id] = [item]
        } else {
            obj[item.id].push(item)
        }
        return obj
    }, {})
    let cv = Object.keys(mp).map(id => {
        return mp[id].reduce((state, item) => {
            console.log('item',item)
            if(JSON.stringify(item.grouped_addons)===JSON.stringify(state.grouped_addons)){
                state.price += item.price
                
            }
            return state
        })
    })
    console.log(JSON.stringify(cv))
    

我想要的最終結(jié)果應(yīng)該是如下,只合并grouped_addons相同的item,不相同的不進(jìn)行合并:

[{
                "id": 12,
                "item_id": 676,
                "name": "49da",
                "price": 168,
                "grouped_addons": [{
                    "addons": [{
                            "id": "0_0_40",
                            "name": "rice",
                            "qty": 0,
                            "unit_price": "5.00"
                        },
                        {
                            "id": "0_0_41",
                            "name": "what",
                            "qty": 1,
                            "unit_price": "15.00"
                        }
                    ]
                }]
            },
            .......
回答
編輯回答
憶當(dāng)年

寫個遞歸判斷吧,別直接stringfy,這種數(shù)據(jù)形式多級的你要判斷有相同完整的一項,我一直是自己寫個專用的遞歸。(小聲的問一下這是什么商城么)

2017年5月29日 05:19
編輯回答
萢萢糖

怎么合并?
合并規(guī)則是什么呀?真心沒看懂算法要求。結(jié)果也省略,更看不懂。

2018年1月5日 14:42
編輯回答
妖妖

通過努力已經(jīng)解決了

2018年6月12日 04:20