如何在javascript中将多维对象转换为表行列格式
我的ajax响应中有一个多维对象。这是目标如何在javascript中将多维对象转换为表行列格式,javascript,json,multidimensional-array,Javascript,Json,Multidimensional Array,我的ajax响应中有一个多维对象。这是目标 response = { "Bangladesh": { "2016": 5, "2017": 1 }, "Nepal": { "2016": 1, "2019": 10 } }; 现在我想将该数组重新排列为Goo
response = {
"Bangladesh": {
"2016": 5,
"2017": 1
},
"Nepal": {
"2016": 1,
"2019": 10
}
};
现在我想将该数组重新排列为GoogleChart数据表格式,如下所示
['Year', 'banglladesh', 'nepal' ],
['2016', 5,1],
['2017', 1,0],
['2019', 0, 10],
这很难,我相信可以改进。见评论 常数响应={ 孟加拉国:{ 2016: 5, 2017: 1 }, 尼泊尔:{ 2016: 1, 2019: 10 } }; const parse=val=>isNaNval?瓦尔:号码 const tablerize=obj,unique=>{ const columns=Object.keysobj 常量表=[[唯一,…列]] //由唯一键索引 常数索引={} //按索引排序 columns.forEachkey,ii=>{ return Object.keysobj[key].forEachprop=>{ 如果!索引[道具]{ 索引的[prop]={} } 索引[prop][ii]=obj[key][prop] } } //添加到输出表中 Object.keysindexed.forEachkey=>{ 表.推送[ parsekey, //返回键索引处的值 …columns.mapk,ii=>parseindex[key][ii]| | 0 ] } 返回表 } console.log 表3:答复“年”
根据提供的响应,不确定数字数组中的第三项来自何处,但至少这会让您找到正确的方向:
var response = {
"Bangladesh": {
"2016": 5,
"2017": 1
},
"Nepal": {
"2016": 1,
"2019": 10
}
};
var out = [];
var header = ["Year"];
out.push(header);
for(var prop in response){
header.push(prop);
var item = response[prop];
for(var year in item){
out.push([year, item[year] ] );
}
}
console.log(out);
你试过什么?你试过什么?这样的转换可以使用and方法或使用simple for循环。谢谢。这将有助于我做出进一步的决定