У меня есть объект на входе, как мне вернуть измененный объект на основе существующего?
Для этой цели я использовал Object.keys()
в сочетании с map()
итератора map()
. Но что-то не работает, я не знаю.
let objjjj = {
a: 2,
b: 3,
c: 4
}
console.log(
Object.keys(objjjj).map((key, i) => {
key: objjjj[key] + 1
})
)
Для скобки фигурных скобок в стрелочных функциях вам нужны скобки.
В противном случае он рассматривается как оператор блока, где имеет место стандартный возврат 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 })))
);
const obj = { 'key': 3, "key": 4 ....}
Вместо этого вам нужно вернуть значение, чтобы снова назначить ключ.
let objjjj = {
a: 2,
b: 3,
c: 4
}
console.log(
Object.keys(objjjj).map((key, i) => {
return objjjj[key] + 1
})
)
Когда вы возвращаете объект из стрелки, необходимо, чтобы вы окружали его круглыми скобками:
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
и оператор спредов для полной привязки объекта к другому объекту.
key
. И последнее, но не менее, вы регистрируете массив объектов (по одному для каждого свойства), который совсем не похож на то, что вы хотите.Object.keys(objjjj).forEach(key => objjjj[key]++);