결과와 객체를 반환그래서 성공적으로 난 후예요 결과를 얻을 관리했습니다 만든 특정 계산에 .reduce 기능을 사용하고 배열
{
"stats": [
{
"name": "Soft Drinks",
"sold": 68
},
{
"name": "Snacks",
"sold": 6
},
{
"name": "Coffee and warm drinks",
"sold": 52
}
]
}
다른 날 배열을 처리 할 때 정확히 동일한 객체 구조가 사용됩니다. pastDay
에 정의되지 않은 오류가 발생했습니다. 누구든지 문제를 파악하는 데 도움이 될 수 있습니까? 또는 내가 .reduce
배열 내가 함께하는 데 문제에 대안을 찾을 수 있도록 도와 :
const days = [
{
"_id":{
"_str":"f23f02994ab992437e423e24"
},
"date":"2016-12-13T00:00:00.000Z",
"statistics":{
"breakdown":{
"byTurnover":[
{
"name":"Soft Drinks",
"sold":34,
"percentage":31.14
},
{
"name":"Snacks",
"sold":3,
"percentage":2.65
},
{
"name":"Coffee and warm drinks",
"sold":26,
"percentage":21.54
},
{
"name":"Brandy",
"sold":2,
"percentage":2.75
},
{
"name":"Beer",
"sold":20,
"percentage":20.15
},
{
"name":"Mixed drinks Other",
"sold":21,
"percentage":21.77
}
],
}
},
"id":{
"_str":"f23f02994ab992437e423e24"
}
},
{
"_id":{
"_str":"b3d0ad7f314e33021739f70c"
},
"date":"2016-12-14T00:00:00.000Z",
"statistics":{
"breakdown":{
"byTurnover":[
{
"name":"Soft Drinks",
"sold":34,
"percentage":31.14
},
{
"name":"Snacks",
"sold":3,
"percentage":2.65
},
{
"name":"Coffee and warm drinks",
"sold":26,
"percentage":21.54
},
{
"name":"Brandy",
"sold":2,
"percentage":2.75
},
{
"name":"Beer",
"sold":20,
"percentage":20.15
},
{
"name":"Mixed drinks Other",
"sold":21,
"percentage":21.77
}
],
}
},
"id":{
"_str":"b3d0ad7f314e33021739f70c"
}
},
{
"_id":{
"_str":"e1906ce07ab811c74528e3cc"
},
"date":"2016-12-15T00:00:00.000Z",
"statistics":{
"breakdown":{
"byTurnover":[
{
"name":"Soft Drinks",
"sold":34,
"percentage":31.14
},
{
"name":"Snacks",
"sold":3,
"percentage":2.65
},
{
"name":"Coffee and warm drinks",
"sold":26,
"percentage":21.54
},
{
"name":"Brandy",
"sold":2,
"percentage":2.75
},
{
"name":"Beer",
"sold":20,
"percentage":20.15
},
{
"name":"Mixed drinks Other",
"sold":21,
"percentage":21.77
}
],
}
},
"id":{
"_str":"e1906ce07ab811c74528e3cc"
}
},
];
const newStats = days.reduce(function (pastDay, currentDay) {
const nextStats = currentDay.statistics.breakdown.byTurnover.map(function(stat) {
\t const oldSold = pastDay.statistics.breakdown.byTurnover.find(function (old) {
\t return old.name === stat.name;
});
\t const newSold = stat.sold + oldSold.sold;
\t stat.sold = newSold;
return stat;
});
return {
stats: nextStats,
};
});
console.log(newStats);
출력 : Uncaught TypeError: Cannot read property 'breakdown' of undefined
두 번째 배열의 .reduce 코드 :
const newStats = days.reduce(function (pastDay, currentDay) {
const nextStats = currentDay.statistics.breakdown.byTurnover.map(function(stat) {
const oldSold = pastDay.statistics.breakdown.byTurnover.find(function (old) {
return old.name === stat.name;
});
const newSold = stat.sold + oldSold.sold;
stat.sold = newSold;
return stat;
});
return {
stats: nextStats,
};
});
console.log(newStats);
앤디 감사합니다. 이 방법이 효과가 있지만 다른 접근 방법을 권하고 있습니까? –
어쩌면 코드에 따라 달라 지겠습니까? –
중첩 된 결과 대신에 const days = [{stats : [...]}] 처럼 결과를 반환 할 수있는 방법이 있습니까? –