使用 reduce 或 map 将 JavaScript 对象中的每个 属性 大写
Use reduce or map to upper-case every property in a JavaScript object
有没有办法使用 map
或 reduce
将对象的所有键都大写以便直接返回结果?
与 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)
有没有办法使用 map
或 reduce
将对象的所有键都大写以便直接返回结果?
与 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)