【发布时间】:2019-04-27 15:28:57
【问题描述】:
我在一个数组中有多个对象。他们每个人都有一个分配给他们的 labelId。如果标签 id 相同,那么我需要通过将一些值放在新组合对象的数组中来组合对象。
[
{
field: "legalName",
isOpened: false,
label: "Legal Name",
labelId: 1,
value: "John Doe"
},
{
field: "homeAddress1",
isOpened: false,
label: "Home Address",
labelId: 2,
value: "2343 Main Street"
},
{
field: "homeAddress2",
isOpened: false,
label: "Home Address",
labelId: 2,
value: "New York, NY"
}
]
我希望它看起来像什么
[
{
isOpened: false,
label: "Legal Name",
labelId: 1,
values:
[
{field: "legalName", value: "John Doe"}
]
},
{
isOpened: false,
label: "Home Address",
labelId: 2,
values:
[
{field: "homeAddress1", value: "2343 Main Street"},
{field: "homeAddress2", value: "New York, NY"}
]
}
]
我正在从原始对象中删除字段和值,并将其放入所有对象的值数组中,无论它们是否具有相同的 labelId。
到目前为止的代码 -
personalInfoArray.forEach(info => {
personalInfoArray.forEach(info2 => {
if ((info.labelId === info2.labelId) && (info.field !== info2.field)) {
info.values = [
{field: info.field, value: info.value},
{field: info2.field, value: info2.value}
]
}
})
})
我在同一个数组中循环两次以确定对象是否具有相同的 labelId,如果成功 - 创建数组。问题是我没有删除属性,而另一个对象仍然存在。如果它们没有相同的 labelId,则不会发生任何事情。
谢谢
【问题讨论】:
-
为什么 legalName 值是一个数组?一个人只有一个法定姓名……不是吗?
-
主要是为了与其他一切保持一致。上面的例子只是整体数据的一小部分。
-
似乎将所有字段组合成一个对象比对象数组更有意义......只是我的意见
-
别担心!感谢反馈!你的理由是什么?
-
为什么?当全部在一个对象中时,无需弄清楚什么属性在哪里。主对象的属性当然可以包含数组
标签: javascript arrays reactjs ecmascript-6