Spa*_*000 0 javascript lodash reactjs ramda.js
我有一个 api 返回这样的数据集:
const data = {
session: ....,
timestamp: ....,
samples: [
{
key: 'I',
values: [
{ timing: '12356timingdatething', reading: -37.1234 },
{ timing: '12356timingdatething', reading: -32.1234 },
{ timing: '12356timingdatething', reading: 1.1234 },
// ....
],
},
{
key: 'I',
values: [
{ timing: '12356timingdatething', reading: -100.1234 },
{ timing: '12356timingdatething', reading: 5.1234 },
{ timing: '12356timingdatething', reading: 5.3334 },
// ....
],
},
{
key: 'I',
values: [
{ timing: '12356timingdatething', reading: -37.1234 },
{ timing: '12356timingdatething', reading: -32.1234 },
{ timing: '12356timingdatething', reading: 1.1234 },
// ....
],
},
]
}
Run Code Online (Sandbox Code Playgroud)
我想要做的就是抓住values从samples和他们推到一个新的阵列,这将只是一个平面数组,这样的:
const newData = [
[
{ timing: '12356timingdatething', reading: -37.1234 },
{ timing: '12356timingdatething', reading: -32.1234 },
{ timing: '12356timingdatething', reading: 1.1234 },
// ....
{ timing: '12356timingdatething', reading: -100.1234 },
{ timing: '12356timingdatething', reading: 5.1234 },
{ timing: '12356timingdatething', reading: 5.3334 },
// ....
{ timing: '12356timingdatething', reading: -37.1234 },
{ timing: '12356timingdatething', reading: -32.1234 },
{ timing: '12356timingdatething', reading: 1.1234 },
// ....
]
Run Code Online (Sandbox Code Playgroud)
我能够samples像这样进入一个新数组:
this.setState(prevState => ({
newArray: [...prevState.newArray, [...data.samples] ]
}));
Run Code Online (Sandbox Code Playgroud)
我愿意使用像这样的库,lodash或者ramda如果存在可以使这更容易的库。
您可以使用reduce()或flatMap():
const newData = data.reduce((accumulated, current) => [...accumulated, ...current.values], []);
Run Code Online (Sandbox Code Playgroud)
或者:
const newData = data.flatMap(item => item.values);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |