2017-01-04 53 views
0

values視爲未確定的對象列表。優化 - lodash與許多參數合併的兼容性

我想這方面的一個有效ES5版本:

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

由於...anything不允許我做這樣的:

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

但我敢肯定它不是最好的辦法做...

任何想法?

+1

如果'values'是一個數組,那麼我認爲你可以使用'_.merge({},values)'。或者你的例子可以簡化爲'_.reduce(response,_.merge,{})'。 –

+0

'_.merge({},values)'將導致將值'放入'而不是''用''{''''。 '_.reduce(response,_.merge,{})'是一個好點;)。但我認爲它不是更有效率。 – HollyPony

+0

對於每個值,少一個函數調用,但這是一個微妙的時間:) –

回答

1

您可以在值數組上使用使用Function#apply。您需要Array#concat一個空的對象,如果你不想變異原始對象:

_.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>