JS在对象数组中切片嵌套数组

问题描述 投票:0回答:1

我具有以下数组结构:

  const mockData = [
    {
      text: 'Text1',
      data: [
        { field: '1' },
        { field: '2' },
        { field: '3' },
        { field: '4' },
        { field: '5' },
        { field: '6' }
      ]
    },
      {
      text: 'Text1',
      data: [
        { field: '1' },
        { field: '2' },
        { field: '3' },
        { field: '4' },
      ]
    }
  ];

我需要splice(0, 3)嵌套的data数组。

这是我到目前为止尝试过的,但是我需要获得与切片为data的输入数组相同的输出:

  const mockData = [
    {
      text: 'Text1',
      data: [
        { field: '1' },
        { field: '2' },
        { field: '3' },
        { field: '4' },
        { field: '5' },
        { field: '6' }
      ]
    },
      {
      text: 'Text1',
      data: [
        { field: '1' },
        { field: '2' },
        { field: '3' },
        { field: '4' },
      ]
    }
  ];


const slicedArray = mockData.reduce((accumulator, arr) => {
  const spliceData = arr.data.splice(0, 3);

  accumulator.push(spliceData);

  return accumulator;
}, []);


console.log(slicedArray)

最简单的方法是什么?谢谢!

javascript arrays
1个回答
0
投票

您可以使用:

const mockData = [
    {
      text: 'Text1',
      data: [
        { field: '1' },
        { field: '2' },
        { field: '3' },
        { field: '4' },
        { field: '5' },
        { field: '6' }
      ]
    },
      {
      text: 'Text1',
      data: [
        { field: '1' },
        { field: '2' },
        { field: '3' },
        { field: '4' },
      ]
    }
  ];
const slicedArray = mockData.map(d => ({...d, data: d.data.slice(0, 3)}))
console.log(slicedArray)
© www.soinside.com 2019 - 2024. All rights reserved.