为什么我的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 }。有什么我做不对的事情吗?谢谢...

解决方法

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

{ [key]: value }

如果您的JavaScript环境支持对象传播,则整个过程可以写为:

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