gpt4 book ai didi

javascript - 获取对象数组的数组而不是对象数组

转载 作者:行者123 更新时间:2023-12-03 01:17:01 25 4
gpt4 key购买 nike

我有 2 个对象数组(this.so、模型),我正在尝试操作它们来创建一个新的对象数组(this.soModelBOM)。

我在两个数组上都使用了 array.filter().map()。

但是,我得到的是对象数组的数组,而不仅仅是对象数组。

this.soModelBOMs = this.so.filter(x => x.lacking > 0).map(so => 
model.filter(x => x.model_no == so.model_no).map(m => ({
production_id: so.production_id,
model_id: m.model_id,
model_no: m.model_no,
process_rev: m.process_rev,
bom_rev: m.bom_rev,
process: m.process.map(p => ({
process_order: p.process_order,
process_name: p.process_name,
process_no: p.process_no,
process_yield: p.process_yield,
bom: p.bom.map(b => ({
alt: b.alt,
bom_item: b.bom_item,
bom_name: b.bom_name,
bom_code: b.bom_code,
bom_qty: b.bom_qty,
bom_stock: b.bom_stock,
bom_yield: b.bom_yield,
bom_req: b.bom_qty * so.lacking
}))
}))
}))
)

我得到了类似这样的东西:

[
[
{
"production_id": 1,
"model_id": 1,
...
}
],
{
"production_id": 2,
"model_id": 2,
...
}
[
{
"production_id": 3,
"model_id": 3,
...
}
],
]

如何修复我的代码,以便我可以将对象推送到数组中,而不是将对象数组推送到数组中?

类似这样的事情:

[
{
"production_id": 1,
"model_id": 1,
...
},
{
"production_id": 2,
"model_id": 2,
...
},
{
"production_id": 3,
"model_id": 3,
...
}
]

最佳答案

您可以使用find而不是filter

this.soModelBOMs = this.so.filter(x => x.lacking > 0).map(so => {
var m = model.find(x => x.model_no == so.model_no);
if(m) {
return {
production_id: so.production_id,
model_id: m.model_id,
model_no: m.model_no,
process_rev: m.process_rev,
bom_rev: m.bom_rev,
process: m.process.map(p => ({
process_order: p.process_order,
process_name: p.process_name,
process_no: p.process_no,
process_yield: p.process_yield,
bom: p.bom.map(b => ({
alt: b.alt,
bom_item: b.bom_item,
bom_name: b.bom_name,
bom_code: b.bom_code,
bom_qty: b.bom_qty,
bom_stock: b.bom_stock,
bom_yield: b.bom_yield,
bom_req: b.bom_qty * so.lacking
}))
}))
};
}
})

不过我没有测试这段代码。

附注:

您可以使用扩展运算符将代码重构为类似这样的

this.soModelBOMs = this.so.filter(x => x.lacking > 0).map(so => {
var m = model.find(x => x.model_no == so.model_no);
if (m) {
return {
...so,
...m,
process: m.process.map(p =>
({
...p,
bom: p.bom.map(b =>
({ ...b,
bom_req: b.bom_qty * so.lacking
}))
})),
}
}
});

关于javascript - 获取对象数组的数组而不是对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51960527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com