首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有数组的节点JS中循环JSON

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

Stack Overflow用户
提问于 2018-02-15 04:25:59
回答 2查看 56关注 0票数 0

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

代码语言:javascript
复制
{
  "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的数据在每次调用中都可能有所不同。

我想要的格式是

代码语言:javascript
复制
[{
    "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
    }
}]

请帮忙..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-15 06:33:46

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

代码语言:javascript
复制
var data = { "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]}));
console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2018-02-15 04:35:28

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

代码语言:javascript
复制
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)

现在,您可以映射这些键,并使用它们来引用有效负载。因此,例如,如果您想要创建一个包含每个项目的美元成本的数组。

代码语言:javascript
复制
var usdCost = keys.map(function (key) {
  return {
    item: key,
    usd: payload[key].USD
  }
})

// [{
//   item: "TV",
//   usd: 9677.25
// }, {
//   item: "Lamp",
//   usd: 231.35
// }]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48799937

复制
相关文章

相似问题

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