我在输入中有一个对象,如何在现有的基础上返回修改后的对象?
为了这个目的,我将Object.keys()
与迭代器map()
结合使用。但有些东西不起作用,我没有定义。
let objjjj = {
a: 2,
b: 3,
c: 4
}
console.log(
Object.keys(objjjj).map((key, i) => {
key: objjjj[key] + 1
})
)

答案 0 :(得分:1)
你需要一些括号来包裹arrow functions中的花括号。
否则将其视为块语句,其中undefined
的标准返回发生。
要创建单个对象,您可以将单个对象分散到Object.assign
。
let object = { a: 2, b: 3, c: 4 };
console.log(
Object.assign(...Object.keys(object).map((key, i) => ({ [key]: object[key] + 1 })))
);
虽然您需要密钥和值,但您可以Object.entries
。
let object = { a: 2, b: 3, c: 4 };
console.log(
Object.assign(...Object.entries(object).map(([k, v]) => ({ [k]: v + 1 })))
);
答案 1 :(得分:0)
当您从箭头返回一个对象时,需要用括号括起它:
let obj = {
a: 2,
b: 3,
c: 4
}
console.log(
Object.keys(obj)
.reduce((acc, key) => ({
...acc,
[key]: obj[key] + 1
}), {})
)
// Or by using Object.entries
console.log(
Object.entries(obj)
.reduce((acc, [key, value]) => ({
...acc,
[key]: value + 1
}), {})
)
根据其他答案的评论,您可以使用reduce
和点差运算符将对象完全映射到另一个对象。
答案 2 :(得分:0)
您需要返回值,而不是再次分配给键。
let objjjj = {
a: 2,
b: 3,
c: 4
}
console.log(
Object.keys(objjjj).map((key, i) => {
return objjjj[key] + 1
})
)