【发布时间】:2021-08-13 21:13:21
【问题描述】:
我有这样的输入:
var input = [{IdDevice:"1", Time: '11:01:00', Data: '1,2,3' },
{IdDevice:"2", Time: '11:01:11', Data: '4,5,6' },
{IdDevice:"1", Time: '11:02:00', Data: 'a,b,c' },
{IdDevice:"2", Time: '11:02:11', Data: 'x,y,z' }]
在过程 1 之后:
var output1 = input.map(a => a.Data.split(','))[0].map((_, idx) => {return {data: input.map(a => a.Data.split(',')[idx])}});
console.log(output1)
我有输出1:
[
{ data: [ '1', '4', 'a', 'x' ] },
{ data: [ '2', '5', 'b', 'y' ] },
{ data: [ '3', '6', 'c', 'z' ] }
]
在过程 2 之后:
output1.forEach((each, index) => each.name = `item ${index + 1}`);
console.log(output1)
我有输出:
[
{ data: [ '1', '4', 'a', 'x' ], name: 'item 1' },
{ data: [ '2', '5', 'b', 'y' ], name: 'item 2' },
{ data: [ '3', '6', 'c', 'z' ], name: 'item 3' }
]
现在我希望输出也依赖于 "IdDevice" 像这样:
[
{ data: [ '1', 'a'], name: 'device 1 item 1' },
{ data: [ '2', 'b'], name: 'device 1 item 2' },
{ data: [ '3', 'c'], name: 'device 1 item 3' },
{ data: [ '4', 'x'], name: 'device 2 item 1' },
{ data: [ '5', 'y'], name: 'device 2 item 2' },
{ data: [ '6', 'z'], name: 'device 2 item 3' }
]
还有一个子问题,当我输入时:
var output2 = output1.forEach((each, index) => each.name = `item ${index + 1}`);
console.log(output2)
输出 2 将是未定义的。
【问题讨论】:
-
forEach不返回任何内容,这就是为什么output2是undefined。 -
你到底想要输出什么?
-
我想使用 var output2 来显示子问题。代码将如何转换?
-
这很奇怪。似乎有人通过并否决了问题和所有答案。有人对这个问题有一般性的问题吗?
标签: javascript arrays sorting object