【发布时间】:2020-01-22 21:32:44
【问题描述】:
我有一个 JavaScript 对象,比如说parentObj。
如何改进以下代码。我有一个
reduce、一个map和一个double for loop。
[
{
NAME: 'SOMENAME',
ID: '1',
FROM: '20191223',
TO: '99991231'
},
{
NAME: 'SOMENAME',
ID: '2',
FROM: '20191223',
TO: '99991231'
},
{
NAME: 'SOMENAME',
ID: '3',
FROM: '20191223',
TO: '99991231'
}
]
我创建了一个新对象。
const newObj = .reduce(
function (obj, item) {
obj[item.NAME] = obj[item.NAME] || [];
obj[item.NAME].push(item.ID);
return obj;
},
{}
);
然后从中取出一个新的对象数组。
const newObjArr = Object.keys(newObj ).map(function (key) {
return { NAME: key, ID: newObj [key] };
});
然后是一个双循环。
for (let item1 of newObjArr) {
for (let item2 of parentObj) {
if (item1.NAME=== item2.NAME) {
finalObjArr.push({ NAME: item1.NAME, ID: item1.ID, FROM: item2.FROM, TO: item2.TO});
}
}
}
我的最终输出:
[
{
NAME: 'SOMENAME',
ID: [1, 2, 3],
FROM: '20191223',
TO: '99991231'
},
...
]
【问题讨论】:
-
这听起来像是您想要转换输入。你能同时提供示例输入和预期输出吗?
-
你想在第二个代码 sn-p 中减少什么?
-
@Ben 更新了....
-
您确定要让输出中的一些
ID条目共享相同的数组对象吗?