首页 > 解决方案 > 在Javascript中重建嵌套对象

问题描述

我在 Javascript 中有这样的对象,我需要像下面这样重建它:

  let data = {
            "10001": {
                'brand': 'jeep',
                'model': 'cherokee',
                'price': 27335,
            },
            '10002': {
                'brand': 'jeep',
                'model': 'compas',
                'price': 23775,
            },
            '32402': {
                'brand': 'dodge',
                'model': 'challenger',
                'price': 29590,
            }
        };

像这样 :

let data_sorted = {
    "jeep": {
        10001: {
            'brand': 'jeep',
            'model': 'cherokee',
            'price': 27335,
        }, 10002: {
            'brand': 'jeep',
            'model': 'compas',
            'price': 23775,
        }
    },
    "dodge": {
        32402: {
            'brand': 'dodge',
            'model': 'challenger',
            'price': 29590,
        }
    }
};

尝试过Object.assign,但它合并了重复的键。注意品牌名称“jeep”是重复的。我认为可以使用扩展运算符 (...) 三个点来完成

标签: javascriptjsonobject

解决方案


您需要一些来为第二级构建新对象。

let data = { 10001: { brand: 'jeep', model: 'cherokee', price: 27335 }, 10002: { brand: 'jeep', model: 'compas', price: 23775 }, 32402: { brand: 'dodge', model: 'challenger', price: 29590 } },
    result = Object
        .entries(data)
        .reduce(
            (r, [k, v]) => ({ ...r, [v.brand]: { ...(r[v.brand] || {}), [k]: v } }),
            {}
        );

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读