【问题标题】:Why can't Javascript spread operator be used after object key?为什么不能在对象键之后使用 Javascript 扩展运算符?
【发布时间】:2019-04-13 23:40:02
【问题描述】:
我有以下代码:
const array = [{
a: 'a',
b: 'b'
}];
console.log(...array);
const store = {
obj: ...array
}
console.log 将打印结果就好了。但是,当尝试设置store 的密钥时,我得到了Parsing error: Unexpected token。
...array 不是分配给store 的obj 键的有效对象吗?
【问题讨论】:
标签:
javascript
spread-syntax
【解决方案1】:
... 将数组展开为单个项目。数组可以有超过 1 个元素,因此会有超过 1 个 RHS,这将是无效的。因此,您可以使用obj : {...array} 或obj : [...array]
const array = [{a: 'a',b: 'b'},{c: 'c', d: 'd'}];
console.log(...array);
const store = {
obj: {...array},
obj1: [...array]
};
console.log(store);
【解决方案2】:
spread 语法在对象内部或可迭代内部工作。在您的情况下,您需要在数组中传播元素。
Spread Syntax
扩展语法允许一个可迭代对象,例如一个数组表达式或字符串在需要零个或多个参数(用于函数调用)或元素(用于数组字面量)的地方扩展,或在需要零个或多个键值对(对于对象字面量)的地方扩展的对象表达式。
const array = [0, 1, 2]
const store = {
obj: [...array] // <-- the array is being spreded into an array.
}
console.log(store)