首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数组对象数组中获取数组

从数组对象数组中获取数组
EN

Stack Overflow用户
提问于 2021-09-16 18:48:23
回答 4查看 57关注 0票数 0

我有一个数组,它由一个数组对象组成,如下所示:

代码语言:javascript
复制
dataArr = [
    {
       id: 1,
       arrObj: [
          {
             id: 11,
             label: 'apple'
          },
          {
             id: 12,
             label: 'ball'
          }
       ]
    },
    {
       id: 2,
       arrObj: [
          {
             id: 21,
             label: 'car'
          },
          {
             id: 22,
             label: 'dog'
          }
       ]
    }
];

我需要提取一个只由arrObj对象组成的数组:

代码语言:javascript
复制
var newArr = [
    {
         id: 11,
         label: 'apple'
      },
      {
         id: 12,
         label: 'ball'
      },
      {
         id: 21,
         label: 'car'
      },
      {
         id: 22,
         label: 'dog'
      }
];

尝试使用减少方法,但未成功:

代码语言:javascript
复制
 dataArr.reduce((previousValue, currentValue, currentIndex, array) => {
     return previousValue. arrObj.concat(currentValue.arrObj)
 });

让我知道怎么做。谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-09-16 18:54:03

你离我很近。

  1. 结果中没有arrObj属性,它只是一个数组。
  2. 您需要提供一个空数组作为reduce()的初始值参数。

代码语言:javascript
复制
const dataArr = [{
    id: 1,
    arrObj: [{
        id: 11,
        label: 'apple'
      },
      {
        id: 12,
        label: 'ball'
      }
    ]
  },
  {
    id: 2,
    arrObj: [{
        id: 21,
        label: 'car'
      },
      {
        id: 22,
        label: 'dog'
      }
    ]
  }
];

const newArr = dataArr.reduce((previousValue, currentValue) => {
  return previousValue.concat(currentValue.arrObj)
}, []);

console.log(newArr);

票数 2
EN

Stack Overflow用户

发布于 2021-09-16 18:52:33

代码语言:javascript
复制
let dataArr = [
    {
       id: 1,
       arrObj: [
          {
             id: 11,
             label: 'apple'
          },
          {
             id: 12,
             label: 'ball'
          }
       ]
    },
    {
       id: 2,
       arrObj: [
          {
             id: 21,
             label: 'car'
          },
          {
             id: 22,
             label: 'dog'
          }
       ]
    }
];

let result = dataArr.flatMap(e => e.arrObj)
console.log(result)

票数 6
EN

Stack Overflow用户

发布于 2021-09-16 19:11:56

您可以通过使用传真机..。在一行中使用

代码语言:javascript
复制
dataArr.reduce((previousValue, currentValue) => [...previousValue?.arrObj, ...currentValue?.arrObj]);

提示:如果没有属性?.,请使用可选的链接arrObj

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69213679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档