[英]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.