【问题标题】:How can I "unpack" a nested object as an array?如何将嵌套对象“解包”为数组?
【发布时间】:2020-12-26 08:31:38
【问题描述】:

我有一个由可迭代项组成的对象(键只是日期字符串)。其中一些对象有不止一项。

我想展平每个对象,以便只保留一个维度的对象。

基本上,我希望data 看起来像expected

const data = {
//this datestring only has one item
  "1598989834745": {
    "219319571 ": {
      applicantCode: "goc2gp",
      carrera: "Trabajo Social",
      code: "219319571 "
    }
  },
//this one has two items
  "1598990166911": {
    "215576855": {
      applicantCode: "8e11532",
      carrera: "Médico Cirujano y Partero",
      code: "215576855"
    },
    "217831836": {
      applicantCode: "ybg14pd",
      carrera: "Trabajo Social",
      code: "217831836"
    }
  }
};

const expected = [
  {
    applicantCode: "goc2gp",
    carrera: "Trabajo Social",
    code: "219319571 "
  },
  {
    applicantCode: "8e11532",
    carrera: "Médico Cirujano y Partero",
    code: "215576855"
  },
  {
    applicantCode: "ybg14pd",
    carrera: "Trabajo Social",
    code: "217831836"
  }
];

我已经尝试映射Object.keys

function objToArr(obj: object): object[] {
  return Object.keys(obj).map(key => obj[key]);
}

但是当我不止一次这样做(覆盖两个维度)时,它会返回:

[
        {
          '219319571 ': {
            applicantCode: 'goc2gp',
            carrera: 'Trabajo Social',
            code: '219319571 '
          }
        },
        {
          '215576855': {
            applicantCode: '8e11532',
            carrera: 'Médico Cirujano y Partero',

            code: '215576855'
          },
          '217831836': {
            applicantCode: 'ybg14pd',
            carrera: 'Trabajo Social',
            code: '217831836'
          }
        }
      ]
```

【问题讨论】:

  • 到目前为止你尝试过什么?您可以将其添加到问题中吗?

标签: javascript object flatten


【解决方案1】:

您可以通过几个Object.values 电话到达那里。大致如下:

const expected = Object.values(data).map(v => Object.values(v)).flat()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 2021-05-28
    • 2021-11-06
    • 2020-07-03
    • 2017-11-15
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多