使用 reduce 或 map 将 JavaScript 对象中的每个 属性 大写

Use reduce or map to upper-case every property in a JavaScript object

有没有办法使用 mapreduce 将对象的所有键都大写以便直接返回结果?

forEach

配合使用效果很好

var o = {
  fname: 'john',
  lname: 'doe'
}
var result = {}
Object.entries(o)
  .forEach((el) => {
    result[el[0].toUpperCase()] = el[1]
  })


console.log('result', result) // works

但正在尝试更改为

reduce 不工作

var o = {
  fname: 'john',
  lname: 'doe'
}

var result = Object
  .entries(o)
  .reduce((accum, curr) => {
    return accum[curr[0].toUpperCase()] = curr[1]
  }, {})

console.log('result', result)

您需要 return 回调中的对象,而不是 属性 值:

var result = Object.entries(o).reduce((accum, [key, val]) => {
  accum[key.toUpperCase()] = val;
  return accum;
}, {})

您只需要 return 对累加器进行突变后,而不是 return 在同一行上:

var o = {
  fname: 'john',
  lname: 'doe'
}

var result = Object
  .entries(o)
  .reduce((accum, curr) => {
    accum[curr[0].toUpperCase()] = curr[1]
    // Note here: return the accumulator after the mutation:
    return accum
  }, {})

console.log('result', result)