Javascript 在没有数组的节点JS中循环JSON

Javascript 在没有数组的节点JS中循环JSON,javascript,json,Javascript,Json,我有一个API的响应,其中JSON不在数组中,如下所示 { "TV": { "USD": 9677.25, "EUR": 7768.87, "JPY": 1072773.87, "GBP": 6898.93, "AUD": 12294.15, "CAD": 12056.19 }, "Lamp": { "USD": 231.35, "EUR": 185.89, "JPY": 25735.85, "GBP": 16

我有一个API的响应,其中JSON不在数组中,如下所示

{
  "TV": {
    "USD": 9677.25,
    "EUR": 7768.87,
    "JPY": 1072773.87,
    "GBP": 6898.93,
    "AUD": 12294.15,
    "CAD": 12056.19
},
 "Lamp": {
    "USD": 231.35,
    "EUR": 185.89,
    "JPY": 25735.85,
    "GBP": 168.82,
    "AUD": 296.7,
    "CAD": 283
  }
}
如果是数组,我可以使用
.map
函数,但在这种情况下,如何在循环数据时显示数据,因为来自API的数据在每次调用时可能会有所不同

我想要的格式是

[{
    "PRODUCT": "TV",
    "PRICE": {
        "USD": 9677.25,
        "EUR": 7768.87,
        "JPY": 1072773.87,
        "GBP": 6898.93,
        "AUD": 12294.15,
        "CAD": 12056.19
    }
}, {
    "PRODUCT": "Lamp",
    "PRICE": {
        "USD": 231.35,
        "EUR": 185.89,
        "JPY": 25735.85,
        "GBP": 168.82,
        "AUD": 296.7,
        "CAD": 283
    }
}]

请帮忙

您可以检索JSON对象顶级属性的键

var payload = {
  "TV": {
    "USD": 9677.25,
    "EUR": 7768.87,
    "JPY": 1072773.87,
    "GBP": 6898.93,
    "AUD": 12294.15,
    "CAD": 12056.19
},
 "Lamp": {
    "USD": 231.35,
    "EUR": 185.89,
    "JPY": 25735.85,
    "GBP": 168.82,
    "AUD": 296.7,
    "CAD": 283
  }
}

var keys = Object.keys(payload)
现在,您可以映射这些键并使用它们引用有效负载。例如,如果您想创建一个包含每个项目美元成本的数组

var usdCost = keys.map(function (key) {
  return {
    item: key,
    usd: payload[key].USD
  }
})

// [{
//   item: "TV",
//   usd: 9677.25
// }, {
//   item: "Lamp",
//   usd: 231.35
// }]

您可以使用
Object.keys()
对数据的每个键进行迭代,然后使用
array#map
,使用对象创建一个结果数组

var数据{“TV”:{“USD”:9677.25,“EUR”:7768.87,“JPY”:1072773.87,“GBP”:6898.93,“AUD”:12294.15,“CAD”:12056.19},“Lamp”:{“USD”:231.35,“EUR”:185.89,“JPY”:25735.85,“GBP”:168.82,“AUD”:296.7,“CAD”:283}, result=Object.keys(data.map)(k=>({PRODUCT:k,PRICE:data[k]}));
控制台日志(结果)所需输出是什么?@Hassaniam我想将上面提到的JSON转换为arrayPlease用所需格式更新问题。@Hassaniam updated。