Карта на значения объекта Javascript без дополнительной переменной? - PullRequest
0 голосов
/ 09 июля 2019

Я использую следующий фрагмент кода (который работает нормально)

  const result = {}
  Object.keys(timers).forEach(key => {
    result[key] = hydrate(timers[key])
  })
  return result
}

Мне интересно, возможно ли это одним способом?Так что без необходимости заполнять объект результата?

Ответы [ 2 ]

3 голосов
/ 09 июля 2019

Преобразование в записи с Object.entries(), повторение записей с Array.map(), гидратация значений и преобразование обратно в объект с Object.fromEntries():

const fn = timers => Object.fromEntries(
  Object.entries(timers).map(([k, v]) => [k, hydrate(v)])
)
1 голос
/ 09 июля 2019

Просто используйте уменьшить

var timers = {
  a: 2,
  b: 3,
  c: 4
}
 
const hydrate = x => 2*x

var result = Object.entries(timers).reduce((o, [key, value]) => {
  o[key] = hydrate(value)
  return o
}, {})

console.log(result)

без жирной стрелки

var timers = {
  a: 2,
  b: 3,
  c: 4
}
 
function hydrate (x) { return 2 * x }

var result = Object.entries(timers).reduce(function(o, entry) {
  o[entry[0]] = hydrate(entry[1])
  return o
}, {})

console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...