遍历JSON并将结果放入数组中

3
我从一个REST API得到了一个JSON对象,类似于这样:
{
  success: true,
  message: "",
  result: [{
      Currency: "GBP",
      IsActive: true,
      BaseAddress: "1N52wHoVR79PMDishab2XmRHsbekCdGquK",
      Notice: null
    },
    {
      Currency: "USD",
      IsActive: true,
      BaseAddress: "LhyLNfBkoKshT7R8Pce6vkB9T2cP2o84hx",
      Notice: null
    },
    {
      Currency: "YEN",
      IsActive: true,
      BaseAddress: "D9GqmkGCpgtnXP7xMD78v9xfqeDkqBZBMT",
      Notice: null
    }
  ]
};

我只想要一个货币值列表,所以我像这样进行迭代:
var data = body.result;
for (var i in data) {
  var id = data[i].Currency;
  console.log(id)
}

控制台打印正常:
GDP
USD
YEN

但我想把这些字符串放到一个新的数组中,但不知道该怎么做。有什么想法吗?

讨厌的人会说它不是 JSON,但我们明白你的意思。 - Jeremy Thille
抱歉 Jeremy,我不知道你的意思,我做错了什么吗?(我是一个尝试学习的新手,很害怕。) - bitcoder.io
没什么,只是这不是一个正确、有效的JSON格式,而是一个Javascript对象。许多JSON纳粹开发者喜欢抨击那些犯这种错误的人。 - Jeremy Thille
2个回答

6

只需使用 Array#Map 函数:

const data = {
  success: true,
  message: "",
  result: [{
      Currency: "GBP",
      IsActive: true,
      BaseAddress: "1N52wHoVR79PMDishab2XmRHsbekCdGquK",
      Notice: null
    },
    {
      Currency: "USD",
      IsActive: true,
      BaseAddress: "LhyLNfBkoKshT7R8Pce6vkB9T2cP2o84hx",
      Notice: null
    },
    {
      Currency: "YEN",
      IsActive: true,
      BaseAddress: "D9GqmkGCpgtnXP7xMD78v9xfqeDkqBZBMT",
      Notice: null
    },
    {
      Currency: "YEN",
      IsActive: true,
      BaseAddress: "D9GqmkGCpgtnXP7xMD78v9xfqeDkqBZBMT",
      Notice: null
    }
  ]
}

const currencies = [...new Set(data.result.map(a => a.Currency))];
  
console.log(currencies);


1
如果有重复怎么办?我们可能不想要 ["USD","USD","USD"] - Jeremy Thille
@bitcoder.io 如果我的回答对您有帮助,请点赞并验证一下 :) - Erazihel
抱歉,Erazihel,我没有足够的声望来点赞,但是一旦我有了,我一定会点赞。非常好的答案! - bitcoder.io

0

var body = {
  success: true,
  message: "",
  result: [{
      Currency: "GBP",
      IsActive: true,
      BaseAddress: "1N52wHoVR79PMDishab2XmRHsbekCdGquK",
      Notice: null
    },
    {
      Currency: "USD",
      IsActive: true,
      BaseAddress: "LhyLNfBkoKshT7R8Pce6vkB9T2cP2o84hx",
      Notice: null
    },
    {
      Currency: "YEN",
      IsActive: true,
      BaseAddress: "D9GqmkGCpgtnXP7xMD78v9xfqeDkqBZBMT",
      Notice: null
    }
  ]
};

var res = body.result.map(item => { return item.Currency });

console.log(res);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接