如何在javascript中将多维对象转换为表行列格式

如何在javascript中将多维对象转换为表行列格式,javascript,json,multidimensional-array,Javascript,Json,Multidimensional Array,我的ajax响应中有一个多维对象。这是目标 response = { "Bangladesh": { "2016": 5, "2017": 1 }, "Nepal": { "2016": 1, "2019": 10 } }; 现在我想将该数组重新排列为Goo

我的ajax响应中有一个多维对象。这是目标

 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循环。谢谢。这将有助于我做出进一步的决定