从对象数组制作数组数组

时间:2019-08-08 19:04:30

标签: arrays angular typescript

我有一个对象数组,这些对象是从JSON响应中的HTTP请求返回的。但是,由于它以对象数组的形式返回,因此我可以在第一个数组中建立索引以选择特定的对象,但是我无法从对象本身中获取任何值。

这是我从请求中得到的回馈。我希望能够对整个数组以及对象本身进行索引,并能够检索第二级数组中列出的名称和值。

{
    "costByServiceList": [
        {
            "EC2 - Other": 0.0774193717,
            "Amazon Elastic Compute Cloud - Compute": 0.5568
        },
        {
            "EC2 - Other": 0.0774193867,
            "Amazon Elastic Compute Cloud - Compute": 0.5568,
            "AWS Cost Explorer": 0.02
        },
        {
            "EC2 - Other": 0.077419386,
            "Amazon Elastic Compute Cloud - Compute": 0.5568
        },
        {
            "EC2 - Other": 0.0774193613,
            "Amazon Elastic Compute Cloud - Compute": 0.5568
        },
        {
            "EC2 - Other": 0.0774194716,
            "Amazon Elastic Compute Cloud - Compute": 0.5568,
            "AWS Cost Explorer": 0.76
        },
        {
            "EC2 - Other": 0.0774620825,
            "Amazon Elastic Compute Cloud - Compute": 0.5568,
            "AWS Cost Explorer": 0.08
        },
        {
            "EC2 - Other": 0.0763515633,
            "Amazon Elastic Compute Cloud - Compute": 0.5568
        }
    ]
}

我认为创建一个数组数组可以解决此问题,但最终结果并不要求它是数组数组。

1 个答案:

答案 0 :(得分:1)

Object.entries函数为您提供成对数组中的对象的键值对。

response.costByServiceList.forEach(service => 
    Object.entries(service).forEach(([key, value]) => console.log(key, value))));

您可以这样实现您的要求:

let newServices = response.costByServiceList.map(service => Object.entries(service));

这将导致json出现

[
  [
    ["EC2 - Other", 0.0774193717],
    ["Amazon Elastic Compute Cloud - Compute", 0.5568]
  ]
]