首页 > 解决方案 > 为什么我的 JavaScript 对象函数将其参数名称分配为键而不是参数名称?

问题描述

我对 Javascript 对象相当陌生。我已经定义了一个非破坏性函数来更新这样的对象:

function updateObjectWithKeyAndValue(object, key, value) {
  return Object.assign({}, object, { key: value }); 
}

let object = {a: 1};
console.log(updateObjectWithKeyAndValue(object, 'b', 2));
console.log(object);

我得到函数的返回值{ a: 1, key: 2 }而不是{ a: 1, b: 2 }. 有什么我做的不对吗?谢谢...

标签: javascriptjavascript-objects

解决方案


{ key: value }是一个具有名为“key”的属性的对象。要根据变量中的值命名属性key,请使用计算属性名称:

{ [key]: value }

如果你的 JavaScript 环境支持对象传播,那么整个事情可以写成:

return { ...object, [key]: value };

推荐阅读