Массив forEach() и Reduce()

Что вы думаете, это лучший способ сделать?

Уменьшить путь:

const result = Object.keys(params).reduce(
      (previous, key) => {
        if (this.model.hasOwnProperty(key)) previous[key] = this.model[key](params[key]);
        return previous;
  }, {});

ForEach Way:

const result = {};
Object.keys(params).forEach(key => {
      if (this.model.hasOwnProperty(key)) result[key] = this.model[key](params[key]);
    });

Я использую Airbnb Eslint и мне не нравится способ сокращения, так как я изменяю previous (Не-парам-Переприсвоить)

1 ответ

Решение

Я думаю reduce намного лучше, потому что это не проливает перемены повсюду. Вы могли бы сделать это немного лучше, IMO.

var result = Object.keys(params).reduce((res,k)=>
  this.model.hasOwnProperty(k)
    ? Object.assign(res, {[k]: this.model[k](params[k])})
    : res, {});
Другие вопросы по тегам