如何从推入平面数组的嵌套数组中获取值?

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)

我想要做的就是抓住valuessamples和他们推到一个新的阵列,这将只是一个平面数组,这样的:

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如果存在可以使这更容易的库。

Aar*_*all 5

您可以使用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)