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

时间:2018-11-10 18:20:03

标签: javascript spread-syntax

我有以下代码:

using

override fun onBindViewHolder(view: MyViewHolder, index: Int) { view.guideLinearLayout.removeAllViews() /* do binding here*/ } override fun getItemId(position: Int): Long { return position.toLong() } override fun getItemViewType(position: Int): Int { return position } 可以很好地打印结果。但是,当尝试设置const array = [{ a: 'a', b: 'b' }]; console.log(...array); const store = { obj: ...array } 的键时,我得到了console.log

不是store的有效对象才能分配给Parsing error: Unexpected token的{​​{1}}键吗?

2 个答案:

答案 0 :(得分:5)

...将数组散布到各个项目中。数组可以包含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);

答案 1 :(得分:1)

spread语法在对象内部起作用或可迭代。在您的情况下,您需要将元素散布在数组中。

  

Spread Syntax

     

Spread语法允许将数组表达式或字符串之类的可迭代对象 扩展到期望零个或多个参数(用于函数调用)或元素(用于数组文字)的地方 < / strong>,或者将对象表达式扩展到预期零个或多个键值对(用于对象文字)的位置。

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

console.log(store)