【发布时间】:2021-04-08 02:35:50
【问题描述】:
所以我有一个对象数组,其中包含不同项目中不同活动的信息。 它看起来像这样
const input = [
{
Project: 1,
ID: "1-1",
},
{
Project: 1,
ID: "1-2",
},
{
Project: 2,
ID: "2-1",
},
];
从这里,我想去这里
output = [{
Project: 1,
ID1: 1 - 1,
ID2: 1 - 2,
},
{
Project: 1,
ID1: 2 - 1,
},
];
这是我目前所拥有的:
let currentProject = ''
let output = []
for (const e of input) {
let counter
let outputObj = {}
if (currentProject !== e.Project) {
output.push(outputObj)
counter = 1
outputObj = {}
outputObj.projectNum = e.Project
currentProject = e.Project
}
if (currentProject == e.Project) {
outputObj['ID' + counter] = e.ID
counter++
}
}
这是我要返回的内容:
output = [{
Project: 1,
ID1: 1 - 1
},
{
Project: 1,
ID1: 2 - 1
}
]
我不确定是什么问题,尝试了几次以解决它。 有人可以帮我克服困难吗? 任何帮助将不胜感激。
【问题讨论】:
-
为什么不使用 ID 数组而不是
ID1和ID2? -
您每次通过循环创建一个新的
outputObj,而不仅仅是在项目更改时。在循环外初始化它。 -
因为这些对象会被一个一个地输入到一个函数中去执行一些其他的任务。
-
这段代码实际上不会产生你说你要回来的输出。你确定这是你正在使用的例程吗?
-
您可以分两步完成此操作 1. 将
IDs 分组为Project2. 将字符串转换为表达式
标签: javascript arrays object