Оптимизация - Совместимость для слияния lodash со многими аргументами
Рассматривать values
как неопределенный список объектов.
Я хочу эффективную версию ES5 этого:
var result = _.merge({}, ...values); // <-- This is what I want
поскольку ...anything
не допускается, я сделал это:
var result _.reduce(response, function(result, value) {
return _.merge(result, value);
}, {});
Но я уверен, что это не лучший способ сделать...
Есть идеи?
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>