# 三个点(...) 有2个含义,分别表示 扩展运算符和 剩余运算符
## 1 扩展运算符(spread)
**数组展开**
```
function test(a,b,c){
console.log(a);
console.log(b);
console.log(c);
}
var arr = [1, 2, 3];
test(...arr);
// 打印结果
// 1
// 2
// 3
```
**将一个数组插入到另一个数据中**
```
var arr1 = [1, 2, 3];
var arr2 = [...arr1, 4, 5, 6];
console.log(arr2);
// 打印结果
// [1, 2, 3, 4, 5, 6]
```
**字符串转数据**
```
var str='test';
var arr3= [...str];
console.log(arr3);
// 打印结果
// ["t", "e", "s", "t"]
```
## 2 剩余运算符(rest)
**当函数参数个数不确定时,用 rest运算符**
```
function rest1(...arr) {
for (let item of arr) {
console.log(item);
}
}
rest1(1, 2, 3);
// 打印结果
// 1
// 2
// 3
```
**当函数参数个数不确定时的第二种情况**
```
function rest2(item, ...arr) {
console.log(item);
console.log(arr);
}
rest2(1, 2, 3, 4, 5);
// 打印结果
// 1
// [2, 3, 4, 5]
```
**解构使用**
```
var [a,...temp]=[1, 2, 3, 4];
console.log(a);
console.log(temp);
// 打印结果
// 1
// [2, 3, 4]
```
# 历史遗留问题
## 打乱数组
利用内置Math.random()方法。
```
var list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
list.sort(() => {
return Math.random() - 0.5;
});
// 输出
[2, 5, 1, 6, 9, 8, 4, 3, 7]
// Call it again
[4, 1, 7, 5, 3, 8, 2, 9, 6]
```
sort 本质是通过遍历比较数组中两个值来进行排序
接着在sort回调函数中使用Math.random()方法产生一个0~1的随机数
减去0.5就会产生正数与负数概率相同的情况从而随机调换两个值的位置
输出结果就成为一个随机排序的数组
如果Math.random()减去的值大于0.5则会产生一个大概趋势为正序的数组
反之则产生大概趋势为倒序的数组
减去值越大(越小)趋势越明显
- markdown
- 前端技术
- fiddler抓包
- thingjs项目设计
- 目录结构
- thingjs 模型
- 开发规范
- thingjs引入vuejs
- uniapp性能优化
- 防抖与节流
- uniapp 使用高德地图做路径规划不生效解决方法
- 5个CSS编程坏习惯
- echarts 刮刮乐
- jquery轮播图
- uniapp滚动问题
- 5 个不常提及的 HTML 技巧
- Http 缓存简介
- canvas像素操作
- Chrome 调试技巧
- H5隐藏特性
- vue 实战中的一些小技巧
- vue-video-player组件
- JS循环大总结
- vue自定义指令1
- 剩余运算符,扩展运算符(...)用法
- 后端技术
- 面向对象
- linux
- docker
- centos
- CentOS7安装MySQL
- CentOS7安装php
- 阿里云
- 添加宝塔
- 添加子域名
- ssl证书部署
- Liunx常用的命令
- php
- 项目常见问题总结
- 开发规范
- 9个PHP小技巧
- php生成二维码
- 算法
- 经纬度计算距离
- Kmp算法
- mysql
- 索引
- 索引概述及优势
- 索引结构
- 事务
- mysql 数据库任务计划
- 接口
- RESTful API接口设计标准及规范
- 保证接口的安全
- 了解DOS/DDOS/CSRF/XSS攻击
- 防止攻击
- mongoDB
- 安装
- Docker 安装 MongoDB
- 安装扩展
- docker安装mongodb扩展
- supervisor
- 自动化开发
- 接口字典代码配置
- 建模
- three模型展示
- 应用市场
- 应用宝上架流程
- vivo上架流程
- 华为上架流程
- 小米上架流程
- android 获取应用签名
- git部分
- git 基本操作命令
- git解决冲突
- 打包那些事
- electron
- android系统进程保活
