Оптимизация - Совместимость для слияния 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>

Другие вопросы по тегам