Vue扩展运算符是JS中一个可以遍历数组和对象的一种特殊运算符,可以用来从数组和对象中构建出新的对象或数组,Vue中也实现了这项功能,这使得开发者可以在构建应用时使用扩展运算符来进行复杂的处理。

在JS中,扩展运算符的 形式如下:

...obj

使用扩展运算符可以将obj所有属性展开,从而获得一个对象或数组的副本。

例如,下面的代码可以将数组arr加到变量a中:

const arr = [1,2,3];
const a  = [...arr]

Vue中的扩展运算符与JS中的扩展运算符基本一致,可以用来获取数组和对象的副本,而Vue中使用扩展运算符的地方更为丰富,比如:在组件中定义组件选项、在组件中定义props、在实例中定义data对象等。

1、操作对象

在定义组件 props时,可以使用扩展运算符:

Vue.component(example-component {props: {...data},template: <div>{{value}}</div>
})

在实例中定义data对象时也可以使用扩展运算符:

const app = new Vue({data: {.data},template: <div>{{value}}</div>
})

使用扩展运算符合并多个对象(使用扩展运算符合并对象时,如果两个对象中有相同的属性,则对象最后的属性会覆盖先前的属性):

const obj1 = {a: 1}
const obj2 = {b: 2}
const obj = {...obj1, ...obj2}

修改一个属性

method2() {let a = {name: 'zhh', age: 18, id: 10};//先拿到a, 后面的name:zhh1,把 a 中name 的值替换掉了let c = {...a, name: 'zhh1'};console.log(c);// 打印结果  {name: "zhh1", age: 18, id: 10}
}

删除一个属性

method1() {let a = {name: 'zhh', age: 18, id: 10};let {name, ...c} = a;console.log(name, c);//  打印结果 zhh {age: 18, id: 10}
}

如果将对象属性扩展放在数组,将会报错:

iClick11() {let obj = {name: 'zhh',age: '20'}console.log([...obj]);//会报错}
}

2、操作数组

打印数组

methods: {
/**
* 把数组中的元素孤立起来
*/
iClick() {let iArray = ['1', '2', '3'];console.log(...iArray);// 打印结果  1 2 3
}

在数组中添加元素

iClick3() {let iArray = ['1', '2', '3'];console.log(['0', ...iArray, '4']);// 打印结果  ["0", "1", "2", "3", "4"]
}

在数组中删除元素(取出一个元素,与结构赋值的结合。如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错)

iClick8() {const [first, ...rest] = [1, 2, 3, 4, 5];console.log(first);// 打印结果 1console.log([...rest]);// 打印结果 [2, 3, 4, 5]const [one, ...last] = ["foo"];console.log(one);//打印结果 fooconsole.log([...last]);//打印结果 []
}

数组合并

iClick6() {// ES6 的写法var arr1 = [0, 1, 2];var arr2 = [3, 4, 5];arr1.push(...arr2);console.log(arr1);//  打印结果 [0, 1, 2, 3, 4, 5]
}//推荐使用
iClick7() {var arr1 = [0, 1, 2];var arr2 = [3, 4, 5];console.log([...arr1, ...arr2]);//  打印结果 [0, 1, 2, 3, 4, 5]
}

将字符串转成数组

iClick9() {let iString = 'woshizhongguoren';console.log([...iString]);//  打印结果 ["w", "o", "s", "h", "i", "z", "h", "o", "n", "g", "g", "u", "o", "r", "e", "n"]
}

Map和Set结构,Generator函数

iClick10() {let map = new Map([[1, 'one'],[2, 'two'],[3, 'three'],]);let arr = [...map.keys()];console.log(arr);//  打印结果 [1, 2, 3]
}

当做参数传递时,和直接传数组的区别

iClick4() {let iArray = ['1', '2', '3'];//注意传的时候,就要三个点this.hanshu(...iArray);
},
hanshu(...iArray) {let ooo = 1;console.log(...iArray);//  打印结果 1 2 3
}

求出最大值

iClick5() {let iArray = [1, 2, 3, 99, 44, 66, 21, 85, 77];let ooo = Math.max(...iArray);console.log(ooo);//  打印结果 99
}

VUE扩展运算符(...)相关推荐

  1. Vue的三个点es6知识,扩展运算符表达含义

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  2. Vue中...(三个点)的意思及作用(扩展运算符)

    扩展运算符. 对数组和对象而言,就是将运算符后面的变量里东西每一项拆下来. (一)操作数组 // 1.把数组中的元素孤立起来 let iArray = ['1', '2', '3']; console ...

  3. ES6 的扩展运算符

    扩展语法 1. 函数 rest 参数 ES6 引入 rest 参数也叫剩余参数,用于获取函数的多余参数,可以替代使用arguments对象 ... 出现在函数参数列表的最后,那么它就是 rest 参数 ...

  4. javascript ES6 新特性之 扩展运算符 三个点 ...

    对于 ES6 新特性中的 ... 可以简单的理解为下面一句话就可以了: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中. 作用类似于 Object.assign() ...

  5. es6之扩展运算符...

    对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中 let bar = { a: 1, b: 2 }; let baz = { ...bar }; // { a: 1, ...

  6. php es6写法,ES6...扩展运算符(示例代码)

    在数组中的应用 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,++将一个数组转为用逗号分隔的参数序列++. console.log(...[1, 2, 3]) // 1 ...

  7. node 之 ... 扩展运算符报错

    使用pm2的遇到的问题:(实际上是 node 版本不一致导致的问题) 描述:sudo 下的node版本和 全局下的node版本不一致导致...扩展运算符报错. 实例: { "apps&quo ...

  8. 扩展运算符,Object.assign

    2019独角兽企业重金招聘Python工程师标准>>> assign或者...扩展符 都是浅拷贝 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中 ...

  9. JavaScript扩展运算符(...)

    对象的扩展运算符 扩展运算符是三个点(...).用于取出参数对象的所有可遍历属性,然后拷贝到当前对象之中. 如上图所示,新建了一个对象a,然后通过扩展运算符将其属性x,y一并拷贝到b对象中. 合并两个 ...

最新文章

  1. java关键字--static--应用场景、特点和注意事项
  2. 国赛来咯,全国大学生智能汽车竞赛百度赛道正式开启
  3. [引]ASP.NET IIS 注册工具 (Aspnet_regiis.exe)
  4. js笔记(二)数组、对象、this
  5. 前端学习(2015)vue之电商管理系统电商系统之实现图片的预览效果
  6. 受疫情影响 AMD宣布退出CES线下展会
  7. fragment的懒加载
  8. 如何使用sendEmail发送邮件
  9. linux怎么安装网卡驱动固件,Linux网卡驱动的安装方式
  10. ofo现在还有退路吗?
  11. Oracle 卸载步骤详解
  12. ECharts为X轴Y轴添加单位
  13. 计算机二级选择题瞎蒙,一级消防员考试,一级消防员考试题大全
  14. 数字经济发展现状_(我的)数字媒体的现状
  15. Kotlin协程实现原理
  16. HTML tabindex用法及使用场景详解
  17. Neuron segmentation using 3D wavelet integratedencoder–decoder network
  18. JAVA 面试知识点(个人总结)
  19. 微调电位器命名规则_电位器物料规格描述规范
  20. 武汉理工大学计算机考研考纲,2020武汉理工大学计算机考研初试科目、参考书目、招生人数汇总...

热门文章

  1. spring cloud Netflix全套面试,这一篇就够了,3万字整理
  2. 腾讯(唯品会)笔试面试经历
  3. 瓜皮的佳木斯集训Day1
  4. Golang操作Excel的模块Excelize学习总结2-设置单元格数据
  5. 【跃迁之路】【739天】程序员高效学习方法论探索系列(实验阶段496-2019.3.1)...
  6. Word2013文档打字如何设置插入模式与改写模式
  7. 如何求C语言字符串长度(strlen函数和sizeof关键字)
  8. LCUSB-13xB/M 系列高性能 USB 接口 CAN 卡在医疗体外诊断仪上的应用
  9. [原创]ASP.NET MVC调用美图秀秀开放平台拼图实现
  10. 豆瓣 FM 精美版 Chrome 扩展:改变的不只是外表