[英]How to map key and value from array of objects?
我通过$ http得到以下JSON响应:
{
"fruits": [
{
"name": "apple",
"prices": [
{
"2015": 2
},
{
"2014": 3
},
{
"2013": 5
}
]
},
{
"name": "banana",
"prices": [
{
"2015": 1
},
{
"2014": 3
},
{
"2013": 4
}
]
}
]
}
我正在尝试在Javascript中创建一个映射函数(或几个函数),以便获得以下2套:
$scope.new_data = [
{
name: 'apple',
data: [5,3,2]
},
{
name: 'banana',
data: [4,3,1]
}
]
和
$scope.years = ['2013','2014','2015']
也许像这样……但是我不知道如何将键和值分开:
$scope.new_data = $scope.fruits.map(function(fruit){
return {
name: fruit.name,
data: fruit.prices
};
});
$scope.years = $scope.fruits.map(function(fruit){
return [
fruit.prices.reverse();
];
});
您可以在一个.map
函数中完成全部操作
var formattedData = data.fruits.map(function(fruit) {
return {
name: fruit.name,
data: fruit.prices.map(function(price) {
return price[Object.keys(price)[0]];
}).reverse()
}
});
var years = [];
var allYears = data.fruits.map(function(fruit) {
//Get all years to 2d array
return fruit.prices.map(function(price) {
return Object.keys(price)[0];
});
}).reduce(function(p, c) {
//Flatten 2d array
return p.concat(c)
}, []);
//Remove duplicates
allYears.forEach(function(year) {
if (years.indexOf(year) === -1) {
years.push(year);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.