获取json索引下的某一项value值

已知一个数组,如下:

var arr = [{ "label": 0, "tw": "中國", "en": "China", "zh": "中国" }, { "label": 1, "tw": "安哥拉", "en": "Angola", "zh": "安哥拉" }, { "label": 2, "tw": "阿富汗", "en": "Afghanistan", "zh": "阿富汗" }...]

现在要根据后台返回的 country来获取对应的值,这个country是不固定的,比如当 country=0 的时候,country='中国'。当country=2的时候,country='阿富汗'。依次类推

我该怎么办呢,后台不返回直接字符串,要前端去转换,还有根据语言去转换

另外再问一下,这种工作的话,是前端去做还是后台直接返回country='阿富汗'或country='中国'

阅读 2.9k
3 个回答

问题1:
需要明确下,后端返回的 country=0 这个0 和你前端的那个数组里面的值是不是对应的;
比如:我看你的 数组里面有个 label; api返回的country的值是不是和 这个 label 对应的? 还是说后端返回的是数组的角标?

如果是角标:容易解决:直接 let countryObj = arr[country]
如果是对应的label,直接 let countryObj = arr.find(item=>item.label === country)

问题2:
后端返回这种编码,没有合理不合理的,前端做后端做其实差别不大;相对而言前端做其实更好,因为这样api的使用范围就更大了。不然你这里要 country="名称" ;别人可能需要别的

  • 个人见解 *

没有明显的数据对应关系,不是很理解。
我理解是,从根据要显示的语言,从arr数组中转换成一个对应语言的集合,不知道是不是这样?

如果是的话,假定 语言是 tw ,那么可以这样做:

var lan = 'tw';
var list = [];
for (var i in arr) {
  list.push(arr[i][lan]);
}
console.log(list);

const arr = [{"label": 0, "tw": "中國", "en": "China", "zh": "中国"}, {

    "label": 1,
    "tw": "安哥拉",
    "en": "Angola",
    "zh": "安哥拉"
}, {"label": 2, "tw": "阿富汗", "en": "Afghanistan", "zh": "阿富汗"}];
const getCountry = (label) => {
    const find = arr.find(item => item.label === label);
    if (find) {
        return find.zh;
    }
    return null;
}
console.info(getCountry(1));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题