为什么在对象键之后不能使用 Javascript 扩展运算符?



我有以下代码:

const array = [{
a: 'a',
b: 'b'
}];
console.log(...array);
const store = {
obj: ...array
}

console.log会很好地打印结果。然而,当尝试设置store的密钥时,我得到了一个Parsing error: Unexpected token

...array不是分配给storeobj密钥的有效对象吗?

...将数组展开为各个项目。数组可以有多个元素,因此将有多个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);

spread语法在对象内部工作或可迭代。在您的情况下,您需要在数组中展开元素。

排列语法

Spread语法允许迭代表达式(如数组表达式或字符串(在期望零个或多个参数(用于函数调用(或元素(用于数组文字(的位置进行扩展,或允许对象表达式在期望零对或多对键值(用于对象文字(的地方进行扩展。

const array = [0, 1, 2]
const store = {
obj: [...array] // <-- the array is being spreded into an array.
}
console.log(store)

最新更新