对象数组Javascript中的Group元素



我正在尝试用以下输入数据转换数组对象:

var input = [
{ IdDevice: "1", Time: "11:01:00", Data: "1,12,23" },
{ IdDevice: "2", Time: "11:01:11", Data: "30,40,50" },
{ IdDevice: "1", Time: "11:02:00", Data: "5,10,21" },
{ IdDevice: "2", Time: "11:02:11", Data: "32,44,53" },
];

经过一些转换:

const convert = (input) =>
Object.entries(
input
.flatMap(({ IdDevice, Data }) =>
Data.split(",").map((x, i) => ({
data: x,
name: `device ${IdDevice} item ${i + 1}`,
}))
)
.reduce(
(a, { data, name }) => (
(a[name] = a[name] || []), a[name].push(data), a
),
{}
)
).map(([name, data]) => ({ data, name }));
var data = convert(input);

我得到了结果:

[
{ data: [ '1', '5' ], name: 'device 1 item 1' },
{ data: [ '12', '10' ], name: 'device 1 item 2' },
{ data: [ '23', '21' ], name: 'device 1 item 3' },
{ data: [ '30', '32' ], name: 'device 2 item 1' },
{ data: [ '40', '44' ], name: 'device 2 item 2' },
{ data: [ '50', '53' ], name: 'device 2 item 3' }
]

现在我希望最终数据将取决于"时间">属性,例如:数据:";1〃;及时:";11:01:00";所以x:";1〃;,y: ";11:01:00";等等…:

[
{ data: [
{x:'1', y:"11:01:00"},
{x:'5', y:"11:02:00"}
],
name: 'device 1 item 1' 
},
{ data: [
{x:'12', y:"11:01:00"},
{x:'10', y:"11:02:00"}
],
name: 'device 1 item 2' 
},
...
{ data: [
{x:'40', y:"11:01:11"},
{x:'44', y:"11:02:11"}
],
name: 'device 2 item 2' 
},
{ data: [
{x:'50', y:"11:01:11"},
{x:'53', y:"11:02:11"}
],
name: 'device 2 item 3' 
}
]

我该怎么做?

这是一个非常简单的答案,可能不是你想要的,但我相信它会给出你想要的最终响应。

var input = [{
IdDevice: "1",
Time: "11:01:00",
Data: "1,12,23"
},
{
IdDevice: "2",
Time: "11:01:11",
Data: "30,40,50"
},
{
IdDevice: "1",
Time: "11:02:00",
Data: "5,10,21"
},
{
IdDevice: "2",
Time: "11:02:11",
Data: "32,44,53"
},
];

const convert = (input) =>
Object.entries(
input
.flatMap(({
IdDevice,
Data,
Time
}) =>
Data.split(",").map((x, i) => ({
data: x,
name: `device ${IdDevice} item ${i + 1}`,
time: Time
}))
)
.reduce(
(a, {
data,
name,
time
}) => (
(a[name] = a[name] || []), a[name].push({
x: data,
y: time
}), a
), {}
)
).map(([name, data]) => ({
data,
name
}));
var data = convert(input);
console.log(data)

输出:

[
{
"data": [
{
"x": "1",
"y": "11:01:00"
},
{
"x": "5",
"y": "11:02:00"
}
],
"name": "device 1 item 1"
},
{
"data": [
{
"x": "12",
"y": "11:01:00"
},
{
"x": "10",
"y": "11:02:00"
}
],
"name": "device 1 item 2"
},
{
"data": [
{
"x": "23",
"y": "11:01:00"
},
{
"x": "21",
"y": "11:02:00"
}
],
"name": "device 1 item 3"
},
{
"data": [
{
"x": "30",
"y": "11:01:11"
},
{
"x": "32",
"y": "11:02:11"
}
],
"name": "device 2 item 1"
},
{
"data": [
{
"x": "40",
"y": "11:01:11"
},
{
"x": "44",
"y": "11:02:11"
}
],
"name": "device 2 item 2"
},
{
"data": [
{
"x": "50",
"y": "11:01:11"
},
{
"x": "53",
"y": "11:02:11"
}
],
"name": "device 2 item 3"
}
]

最新更新