2017-01-04 6 views
0

values을 개체의 알 수없는 목록으로 간주하십시오.최적화 - 많은 args와 lodash 병합을위한 호환성

var result _.reduce(response, function(result, value) { 
    return _.merge(result, value); 
}, {}); 

하지만 그것은 가장 좋은 방법이 아니다 확신 해요 : ...anything 이후

var result = _.merge({}, ...values); // <-- This is what I want 

은 내가 이것을 만들었 허용되지 않습니다 :

나는이의 효과적인 ES5 버전을 원하는 do ...

아이디어가 있으십니까?

+1

'values'가 배열 다음의 경우 내 생각은 원래 개체를 변이하지 않으려면 Array#concat 빈 개체 필요 당신은'_.merge ({}, values)'를 사용할 수 있습니다. 또는 예제를'_.reduce (response, _.merge, {})'로 단순화 할 수 있습니다. –

+0

'_.merge ({}, values)'는'{} '대신'in' 값을 넣게됩니다. '_.reduce (응답, _.merge, {})'좋은 지적이다;). 그러나 나는 그것이 더 이상 효율적이지 않다고 생각한다. – HollyPony

+0

각 값에 대한 함수 호출이 적지 만 시간이 많이 걸립니다. :) –

답변

1

값 배열에 Function#apply을 사용할 수 있습니다.

_.merge.apply(_, [{}].concat(arr)); 

예 :

var arr = [{ a: 1 }, { b: 2 }, { c: 3 }]; 
 

 
var result = _.merge.apply(_, [{}].concat(arr)); 
 

 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>