【发布时间】:2021-10-02 14:49:41
【问题描述】:
目前我有一个包含TableRowReading数组的数组,比如let allTableReadings: TableRowReading[][]:
interface TableRowReading {
time: number; // We can think of the timestamp `time` as the key for the object.
sensorValues: SensorValues[];
}
interface SensorValues {
sensorIndex: number;
value: number;
}
作为一个示例值,假设我们有:
let allTableReadings: TableRowReading[][] = [
// Array #1
[{
time: 1627315260000,
sensorValues: [{
sensorIndex: 0,
value: 5
}]
},
{
time: 1627314960000,
sensorValues: [{
sensorIndex: 0,
value: 6
}]
}],
// Array #2
[{
time: 1627315260000,
sensorValues: [{
sensorIndex: 1,
value: 7
}]
}],
// Array #3
[{
time: 1627315260000,
sensorValues: [{
sensorIndex: 2,
value: 8
}]
}]
]
有什么方法可以合并allTableReadings中包含的所有数组,以time为key,同时也合并sensorValues的内容?
let mergedTableReadings: TableRowReading[] = [
{
time: 1627315260000,
sensorValues: [{
sensorIndex: 0,
value: 5
}, {
sensorIndex: 1,
value: 7
}, {
sensorIndex: 2,
value: 8
}]
},
{
time: 1627314960000,
sensorValues: [{
sensorIndex: 0,
value: 6
}]
}
]
我被困了一段时间,但我认为我无法生成有用的代码示例。我尝试过使用扩展运算符合并并尝试找到一些方便的 lodash 函数,但没有成功。
大致思路如下:
let merged: TableRowReading[] = [];
for (let i = 0; i < allTableReadings.length; i++) {
// merge allTableReadings[i] into merged
}
【问题讨论】:
标签: javascript arrays reactjs ecmascript-6 lodash