在我的应用程序中,我从控制器获取json结果,我想转向前端的数组数组,因此我可以使用google chart api。
目前我在我收到的字符串上使用$.parseJSON(result)
,所以最后我在控制台中得到了这个:
我想得到的是:
这是我在parseJSON部分之前得到的初始json字符串:
[{"rolename":"some role","perc":45.5},{"rolename":"another role","perc":36.4},{"rolename":"role three","perc":9.1},{"rolename":"role four","perc":9.1}]
有关如何实现这一目标的任何提示?
答案 0 :(得分:2)
ES6(很酷的东西):
var json=[{"rolename":"some role","perc":45.5},{"rolename":"another role","perc":36.4},{"rolename":"role three","perc":9.1},{"rolename":"role four","perc":9.1}];
var answer=json.map(el=>Object.values(el));
工作:http://jsbin.com/pejucoriqu/edit?console
ES5(与很多浏览器兼容):
var answer=json.map(function(el){
var arr=[];
for(var key in el){
arr.push(el[key]);
}
return arr;
});
你有一个对象数组,而且你想要一个数组数组。因此,获取每个元素并使用对象的值映射它。
答案 1 :(得分:1)
您可以使用map
将对象更改为数组,也可以使用Object.keys
和map
仅返回对象值。
var data = [{"rolename":"some role","perc":45.5},{"rolename":"another role","perc":36.4},{"rolename":"role three","perc":9.1},{"rolename":"role four","perc":9.1}]
var result = data.map(function(e) {
return Object.keys(e).map(function(k) {
return e[k]
})
})
console.log(result)
或者使用ES6,您可以使用此类箭头功能
var result = data.map(e => Object.keys(e).map(k => e[k]))