Как повторить значения объектов и заменить неопределенное значение на null, используя lodash?

#javascript #lodash

Вопрос:

Я знаю, как это сделать, используя собственный объект.записи и функцию редуктора. Но можно ли заменить это функцией lodash?

 const object = {
  foo: 'bar',
  baz: undefined,
}

const nulledObject = Object.entries(object).reduce(
  (acc, [key, value]) => ({
    ...acc,
    [key]: typeof value === 'undefined' ? null : value,
  }),
  {}
);

// {
//   foo: 'bar',
//   baz: null,
// }
 

Мое желание было бы чем-то вроде:

 _cloneWith(object, (value) => (typeof value === 'undefined' ? null : value));
 

Комментарии:

1. Ваш код создает совершенно новый объект на каждой итерации .reduce() , копируя все свойства, накопленные до сих пор. Вместо этого вы могли бы просто установить acc[key] по мере необходимости и вернуться acc .

2. Ты пробовал _.reduce() ?

Ответ №1:

Я думаю _.assignWith , это то, что вы ищете:

 const nulledObject = _.assignWith({}, object, 
    (_, value) => typeof value == 'undefined' ? null : value);
 

Ответ №2:

Я нашел другое решение после публикации этого вопроса:

 const nulledObject = _.mapValues(object, 
    (value) => (value === undefined ? null : value));