0
판매가 가장 많은 달의 판매액을 찾은 객체 배열에 대해 일련의 작업 (원래 밑줄 사용)을 수행합니다.코드를 우아한 Lodash로 변환하는 방법
데이터 : values
배열은 해당 달의 총 판매를 나타냅니다. x
= 날짜, y
= 판매.
[
{
name:'banana',
values:[
{
x: //date object: jan 2016,
y: 3423
},
{
x: //date object: feb 2016,
y: 53453
},
{
x: //date object: mar 2016,
y: 65457
},
{
x: //date object: apr 2016,
y: 456345
},
...//12 months
]
},
{
name:'apple',
values:[
{
x: //date object: jan 2016,
y: 34876
},
{
x: //date object: feb 2016,
y: 89
},
{
x: //date object: mar 2016,
y: 7896
},
{
x: //date object: apr 2016,
y: 6547
},
...//12 months
]
},
... more objects
]
내 기능 : 모든 달 중에서 가장 높은 판매액을 반환합니다.
getMaxMonthlySales:function(data){
var salesArrays = _.map(data,obj=>_.map(obj.values,'y'))
var maxSales = _.zip.apply(null,salesArrays)
maxSales = _.reduce(maxSales,(max,arr)=>{
var sum = _.reduce(arr,(memo,val)=>memo+val);
return Math.max(max,sum);
},0)
return maxSales;
}
모든 개체는 0 길이가 같고 날짜 순서가 동일해야합니다. 내 일반적인 전략은 중첩 된지도를 수행하여 배열 만 판매 배열로 가져 오는 것입니다. 그런 다음 배열을 압축하여 월별 판매를 그룹화합니다. 그런 다음 마침내 각 달을 줄여서 매월 총 판매를 찾은 다음 최대 월을 찾습니다.
제 질문은 어떻게 이상적인 로다시 체인으로이 기능을 다시 쓸 수 있습니까? oneliner으로
아름다운, 감사합니다. –