【问题标题】:ES6 Object Spread concatES6 对象传播连接
【发布时间】:2018-05-07 16:28:55
【问题描述】:

我是对象传播的新手。我只知道对象传播可以用来连接数组。在下面的示例中,我将变量 a 和地址键连接起来。我想知道我们是否可以将地址键值添加到数组的每个对象并在代码中将输出作为必需输出。

任何人都可以帮助我很好地参考以了解有关 Object Spread 的更多信息。

var a = [{
	'name':'jay',
  	age: 31
},
        {
	'name':'jay1',
  	age: 30
},
        {
	'name':'jay2',
  	age: 29
}];

var b = {...a, ...{address: 'add'}};

//b output

{name: "jay", age: 31}
{name: "jay1", age: 30}
{name: "jay2", age: 29}
address:"add"

// Required Output
{name: "jay", age: 31, address:"add"}
{name: "jay1", age: 30, address:"add"}
{name: "jay2", age: 29, address:"add"}

【问题讨论】:

  • 对象传播在 ES6 中是 not。它甚至不在 ES8 中!
  • Object Spread属于哪个库?
  • 对象传播是一种(提议的)语言特性,它不属于任何库。

标签: javascript ecmascript-next


【解决方案1】:
 { value:1, ...a, ...b, value:3 }

等于:

Object.assign({value:1}, a, b, {value:3})

在您的情况下,您需要对数组的 每个 元素执行此操作:

const result = a.map(obj => ({...obj, address:"add"}));

【讨论】:

  • Object.assign 等价的不是Object.assign(a, b, { value: 3 }) 吗?您的地图似乎也缺少一些括号:map => ({ ... })
  • 我尝试了最后一个 const 结果,并在 ...obj 处得到错误为 Unexpected token ......请帮助
  • @craig 不,它不会。但是,您对块/对象文字的区别是正确的,谢谢;)
  • @jay 哦,抱歉,已修复;)
  • 您能否帮我提供一个很好的参考资料,让我可以了解更多关于对象传播的信息
猜你喜欢
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
相关资源
最近更新 更多