【问题标题】:Can I add a couple of key-value pairs to a JavaScript object as literals in one line?我可以在一行中将一对键值对作为文字添加到 JavaScript 对象吗?
【发布时间】:2018-02-08 20:38:06
【问题描述】:

假设我有一个对象,例如

var obj = {
  foo: 1,
  bar: 2
}

我想在不循环的情况下添加更多键,语义上是这样的:

obj += { baz: 3, fred: 4 }

是否可以使用现有的 JS 函数?我想在一些函数式链接中做到这一点。

【问题讨论】:

  • 你想在现代浏览器中使用Object.assign
  • Object.assign(obj, { baz: 3, fred: 4 });
  • 注意:对于旧浏览器,(internetexplorer)有一个Polyfill

标签: javascript dictionary javascript-objects associative-array key-value


【解决方案1】:

在执行此操作之前检查compatibility 是否存在问题,但请注意destructuring 以进行救援:

var obj = {
  foo: 1,
  bar: 2
}

obj = {...obj, baz: 3, fred: 4}

以下是不可能的,但我们可以梦想:

obj ...= {beef: 5}

【讨论】:

  • Object.assign 对“使用 polyfill 后的 Internet 爆炸器”更友好——然而,这段代码需要被转译——不是批评,只是一个想法
  • 是的,我要为此添加一个指向 caniuse.com 的链接
【解决方案2】:

发布后我的谷歌搜索就成功了!

显然Object.assign 与 ES6 一起出现,我真的在寻找现代 JS 答案。

var obj = {
  foo: 1,
  bar: 2
}

obj = Object.assign(obj, {baz:3, fred:4})

【讨论】:

  • 如果您有兴趣创建无突变对象(并不总是很重要),请尝试 let newObj = Object.assign({}, obj, { baz:3, fred:4 }); 或者如果您不介意转译或正在使用最近稳定的 node 您也可以扩展/解构到obj = { ...obj, baz:3, fred:4 };
猜你喜欢
  • 2022-12-31
  • 2016-02-11
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 2017-02-25
  • 2022-12-28
  • 2010-11-13
相关资源
最近更新 更多