以下函数使用新键和值更新对象:
function updateObjectWithKeyAndValue(object, key, value) {
return Object.assign({}, object, { [key]: value })
}
我不明白为什么key
和value
看起来不同。当key
不是时,为什么value
在括号中?
答案 0 :(得分:3)
[key]
是ES6 计算属性。这是一个基本的例子:
let obj = {
[1 + 2]: 'Hello!'
};
console.log(obj[3]);
答案 1 :(得分:2)
function obj(x, y) { z = {}; z[x] = y; return z; }
如果您拨打函数obj("weed", "sativa")
,则会返回{ weed: "sativa" }
但是,不能以这种方式同时应用多个密钥,您必须为每个密钥执行此操作:
function obj(w, x, y, z) { v = {}; v[w] = x; v[y] = z; return v; }
而不是那样,你可以这样做:
function obj(x, y) { return { [x]: y }}
它可能看起来不会小得多,但这意味着您可以使用多个动态键,如下所示:
function obj(w, x, y, z) { return { [w]: x, [y]: z }}
现在,执行obj("weed", "sativa", "thc", "40%")
将返回{ weed: "sativa", thc: "40%" }