javascript - Lodash key与数组具有相同的属性

标签 javascript arrays json object lodash

我的数组中有一些对象:

"surcharges": [
    {
        "supplier": "XXXXX",
        "name": "over_pkg_0",
        "amount": 230
    },
    {
        "supplier": "XXXXX",
        "name": "over_pkg_1",
        "amount": 54
    },
    {
        "supplier": "YYYYY",
        "name": "over_pkg_0",
        "amount": 25
    },
    {
        "supplier": "YYYYY",
        "name": "over_pkg_1",
        "amount": 25
    }
];

我想使用 lodash 获得以下结果:

"surcharges": [
    {
        "XXXXX": [
            {
                "name": "over_pkg_0",
                "amount": 230
            },
            {
                "name": "over_pkg_1",
                "amount": 54
            }
        ],
    },
    {
        "YYYYY": [
            {
                "name": "over_pkg_0",
                "amount": 25
            },
            {
                "name": "over_pkg_1",
                "amount": 25
            }
        ],
    }
];

我能够生成类似的东西,但是键正在合并,我无法将它们变成数组。也许我应该在链中的某个地方使用 _.concat ,但我不知道如何使用。

尝试使用:

var finalsurcharges = _.chain(surcharges)
  .keyBy('supplier')
  .mapValues(v => _.omit(v, 'supplier'))
  .value();

产品:

"finalsurcharges": {
    "XXXXX": {
        "name": "over_pkg_1",
        "amount": 54
    },
    "YYYYY": {
        "name": "over_pkg_1",
        "amount": 25
    }
}

最佳答案

使用_.groupBy()按键值对对象数组进行分组:

const data = { surcharges: [{"supplier":"XXXXX","name":"over_pkg_0","amount":230},{"supplier":"XXXXX","name":"over_pkg_1","amount":54},{"supplier":"YYYYY","name":"over_pkg_0","amount":25},{"supplier":"YYYYY","name":"over_pkg_1","amount":25}]};

const finalsurcharges = _(data.surcharges)
    .groupBy('supplier')
    .mapValues((g) => g.map(o => _.omit(o, 'supplier')))
    .value();

console.log(finalsurcharges);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

关于javascript - Lodash key与数组具有相同的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50175202/

相关文章:

javascript - 使用 JavaScript 创建对象

java - 如何在不知道键/名称字符串的情况下解码 json?

java - 如何在 android java 中解析 android studio 中巨大的 JSON 文件

javascript - 单页应用 Nginx Django Python 和端口转发

javascript - 使用 javascript 提供路线的 Google Api map

javascript - 引用 Javascript 对象中的键

javascript - 如何使用 javascript 或 angularjs 从 html 标签中提取/编辑属性?

javascript - 如何将 ids 数组从 Rails 3 Controller 传递到 Javascript 数组?

python - 如何显示json的特定部分?

c - C语言计算字符串中大小写字母的程序