![](/img/trans.png)
[英]Having a problem with a Javascript assignment: Array and object iteration but I have no idea what the solution is, I have tried everything
[英]I have an array of object which needs to restructured into a desired format. I tried using array destructuring using iteration
所需的 output 應如下所示。 我嘗試了 object 重組方式,但我無法將其作為 object 推出。如果您能指導我,我可以使用哪些其他數組方法來獲取所需的數組
const sample = [
{
name: 'Bike',
series: [
{ date: '01-01-2020', value: '4$' },
{ date: '02-01-2020', value: '3$' },
{ date: '03-01-2020', value: '3.5$' }
]
},
{
name: 'Watch',
series: [
{ date: '01-01-2020', value: '1$' },
{ date: '02-01-2020', value: '2$' },
{ date: '03-01-2020', value: '5$' }
]
}
]
const output = [
{ date: '01-01-2020', 'bike-value': '4$', 'watch-value': '1$' },
{ date: '02-01-2020', 'bike-value': '3$', 'watch-value': '2$' },
{ date: '03-01-2020', 'bike-value': '3.5$', 'watch-value': '5$'}
]
我試過的是如下。 但是我不能把它變成一個 object 來推入一個空數組。
for (const {name: n, series: [{date: d , value: v}]} of sample) {
console.log('name: ' + n + ', date: ' + d + ', value: ' + v);
}
您可以循環遍歷sample
數組,然后循環遍歷每個series
數組。 創建一個group
object,其中每個date
作為鍵,最終 output 所需的 object 是它的值。 使用Object.values()
獲取group
object 的值作為數組
const sample=[{name:"Bike",series:[{date:"01-01-2020",value:"4$"},{date:"02-01-2020",value:"3$"},{date:"03-01-2020",value:"3.5$"}]},{name:"Watch",series:[{date:"01-01-2020",value:"1$"},{date:"02-01-2020",value:"2$"},{date:"03-01-2020",value:"5$"}]}]; const group = {} for (const { name, series } of sample) { for (const { date, value } of series) { group[date] = group[date] || { date }; group[date][`${name.toLowerCase()}-value`] = value } } const output = Object.values(group) console.log(output)
群組 object 如下所示:
{
"01-01-2020": {
"date": "01-01-2020",
"bike-value": "4$",
"watch-value": "1$"
},
"02-01-2020": {
"date": "02-01-2020",
"bike-value": "3$",
...
},
"03-01-2020": {
....
}
一個簡單的嵌套構造函數應該在這里工作:
const sample = [
{name : 'Bike', series :
[{date : '01-01-2020', value : '4$'},
{date : '02-01-2020', value : '3$'},
{date : '03-01-2020', value : '3.5$'}]
},
{name : 'Watch', series :
[{date : '01-01-2020', value : '1$'},
{date : '02-01-2020', value : '2$'},
{date : '03-01-2020', value : '5$'}]
}
];
let results = [];
for (let i = 0; i< sample[0].series.length; i++){
//get date and 'Bike' value from first value
let newEntry = {date : sample[0].series[i].date, bikeValue : sample[0].series[i].value};
//find the corresponding 'Watch' value with another loop
let watchValue = 0;
for (let i2 = 0; i2<sample[1].series.length; i2++){
if(sample[1].series[i2].date == newEntry.date){
watchValue = sample[1].series[i2].value;
}
}
newEntry.watchValue = watchValue;
//push new object into results array
results.push(newEntry);
}
console.log(results);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.