[英]Transform the data
我有以下數據結構:
const data = [
{
name: 'ABC',
salesData: [
{
timestamp: '2017-09-01',
value: 10
},
{
timestamp: '2017-09-02',
value: 2
}
]
},
{
name: 'DEF',
salesData: [
{
timestamp: '2017-09-01',
value: 8
},
{
timestamp: '2017-09-02',
value: 3
}
]
}
];
我想將其轉換為:
[
{
name: 'ABC',
'2017-09-01': 10,
'2017-09-02': 2
},
{
name: 'CDE',
'2017-09-01': 8,
'2017-09-02': 3
}
]
我正在嘗試使用Underscore的Chain和Map,這讓我感到困惑。 到目前為止,我有以下內容,不確定如何根據需要編寫convertedSalesData
進行轉換:
_.map(data, function(item) {
let name = item.name;
let salesData = item.salesData;
let convertedSalesData = ?
})
使用ES6,您可以使用傳播語法...
獲得此結果。
const data = [{"name":"ABC","salesData":[{"timestamp":"2017-09-01","value":10},{"timestamp":"2017-09-02","value":2}]},{"name":"DEF","salesData":[{"timestamp":"2017-09-01","value":8},{"timestamp":"2017-09-02","value":3}]}] var result = data.map(function({name, salesData}) { return {name, ...Object.assign({}, ...salesData.map(({timestamp, value}) => ({[timestamp]: value})))} }) console.log(result)
const data = [{ name: 'ABC', salesData: [{ timestamp: '2017-09-01', value: 10 }, { timestamp: '2017-09-02', value: 2 } ] }, { name: 'DEF', salesData: [{ timestamp: '2017-09-01', value: 8 }, { timestamp: '2017-09-02', value: 3 } ] } ]; var res = data.map(function(a) { var obj = { name: a.name }; a.salesData.forEach(function(x) { obj[x.timestamp] = x.value; }) return obj; }) console.log(res);
類似於@Nenad Vracar。 我傾向於使用“減少”:
data.map(({ name, salesData }) => ({
name,
...salesData.reduce(
(record, { timestamp, value }) => {
record[timestamp] = value
return record
},
Object.create(null)
)
}))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.