【发布时间】:2019-12-21 23:57:09
【问题描述】:
我正在尝试找到一种解决方案来为我的嵌套 JSON 数组获取特定格式。我曾尝试使用 Lodash groupBy 和 Javascript reduce 但我似乎找不到解决方案。
输入格式:
[
{
lineitem: {
id:1,
price: {
amount:100
},
supplierName:TestSupplier1
},
quantity:10
},
{
lineitem: {
id:2,
price: {
amount:200
},
supplierName:TestSupplier2
},
quantity:20
},
{
lineitem: {
id:3,
price: {
amount:300
},
supplierName:TestSupplier1
},
quantity:30
},
{
lineitem: {
id:4,
price: {
amount:400
},
supplierName:TestSupplier4
},
quantity:40
},
]
所需的输出格式:
[
{
TestSupplier1: [
{
id:1,
amount:100,
quantity:10
},
{
id:3,
amount:300,
quantity:30
}
],
TestSupplier2: [
{
id:2,
amount:200,
quantity:20
}
],
TestSupplier4: [
{
id:4,
amount:400,
quantity:40
}
]
]
我认为这里有 3 个步骤:
- 按supplierName分组
- 扁平化价格对象
- 将 quantity 移动到 lineitem
谁能帮忙解决这个问题?
更新 1
在按供应商名称成功分组后,我现在想进一步展平数组。这样 TestSupplier'X' 被放置在每个数组中。
请看下面的例子:
[
{
supplierName:TestSupplier1,
id:1,
amount:100,
quantity:10
},
{
supplierName:TestSupplier1,
id:3,
amount:300,
quantity:30
},
{
supplierName:TestSupplier2,
id:2,
amount:200,
quantity:20
},
{
supplierName:TestSupplier4,
id:4,
amount:400,
quantity:40
}
]
【问题讨论】:
-
在您的输出对象中,TestSupplier1 有 2 个具有相同名称“lineitem”的属性,这是不可能的。如果我将 TestSupplier1 设为数组而不是对象可以吗?
-
请包括您的尝试;您可能会偏离一点点,很遗憾有人已经花时间从头开始制定答案,而他们可能只能调整您尝试的一行...
标签: javascript arrays typescript lodash