【问题标题】:re-create an Object to be 2D Array [closed]将对象重新创建为二维数组 [关闭]
【发布时间】:2020-12-07 07:55:12
【问题描述】:

我有一个这样的对象

{ '2020-08': {Invoice: 21400, Receipt: 20800, ...},
  '2020-09': {Invoice: 8003.6, ...},
  '2020-10': {Receipt: 7779.2, ...},
  '2020-11': {Invoice: 32970, ...}
}

想让它变成这样的二维数组

[ ['2020-08', '2020-09', '2020-10', '2020-11'],
  [   21400 ,   8003.6 ,        0 ,    32970 ], //Invoice
  [   20800 ,        0 ,   7779.2 ,        0 ], //Receipt
  ...
]

【问题讨论】:

  • 到目前为止你尝试过什么?
  • 请访问help center,使用tour查看内容和How to Ask。做一些研究,搜索关于 SO 的相关主题;如果您遇到困难,请发布您的尝试minimal reproducible example,并使用[<>] sn-p 编辑器记录输入和预期输出。

标签: javascript arrays object


【解决方案1】:

使用 Object.keys 很容易实现。

const data = {
  '2020-08': {
    Invoice: 21400,
    Receipt: 20800
  },
  '2020-09': {
    Invoice: 8003.6,
    Receipt: 7779
  },
  '2020-10': {
    Receipt: 7779.2,
    Invoice: 32970
  },
  '2020-11': {
    Invoice: 32970,
  }
}

const res = []
const keys = [...Object.keys(data)]
const d = Object.keys(data).map(item => {
  return data[item]["Invoice"] || 0
})
const d1 = Object.keys(data).map(item => {
  return data[item]["Receipt"] || 0
})
console.log([keys, d, d1])

【讨论】:

    【解决方案2】:

    试试:

    let result = [], key= [], invoice= [], receipt = [];
    Object.keys(obj).forEach((x) => {
        key.push(x);
        invoice.push(obj[x].Invoice || 0);
        receipt.push(obj[x].Receipt || 0);
    });
    result = [key,invoice,receipt];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-22
      • 2021-06-16
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      相关资源
      最近更新 更多