ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、扩展运算符 ### 1、概述 扩展(感觉用展开更能代表意义)运算符(spread)是三个点(`...`)。它好比 rest 参数(参考:[函数扩展](%E5%87%BD%E6%95%B0%E6%89%A9%E5%B1%95.md))的逆运算,***将一个数组转为用逗号分隔的参数序列(...需用在数组前)***。 ~~~javascript console.log(...[1, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 [...document.querySelectorAll('div')] // [<div>, <div>, <div>] ~~~ 该运算符主要用于函数调用。 ### 2、应用 (1)、复制数组 ~~~javascript const a1 = [1, 2]; // 写法一 const a2 = [...a1]; // 写法二 const [...a2] = a1; ~~~ (2)合并数组 扩展运算符提供了数组合并的新写法; ~~~javascript const arr1 = ['a', 'b']; const arr2 = ['c']; const arr3 = ['d', 'e']; // ES5 的合并数组 arr1.concat(arr2, arr3); // [ 'a', 'b', 'c', 'd', 'e' ] // ES6 的合并数组 [...arr1, ...arr2, ...arr3] // [ 'a', 'b', 'c', 'd', 'e' ] ~~~ ## 二、常用api `arry.push()` 把一个元素增加到数组的末尾,返回值为新数组的长度`arry.length`; `arry.pop()` 删除数组中最后一个元素,返回值为删除的元素; `arry.unshift()` 与`push`方法类似,区别在于它是在数组的前面添加元素,返回值为新数组的长度`arry.length`; `arry.shift()` 与`pop`方法类似,区别在于它是删除数组前面的元素,返回值依然是被删除的元素; `arry.reverse()` 把数组反向排序,这里要注意它会改变原来的数组,而不会创建新的数组; `arry.sort()` 对数组进行排序,可接受参数,参数必须是函数,如果不没有参数 则是按照字符编码的顺序进行排序; `arry.forEach(item, index)`与`arry.map(item, index)` 两者都是对数组遍历,index表示数组索引,不是必须的参数区别在于`map`方法会返回一个新的数组; `arry.some()` 用于检测数组中的元素是否满足指定条件,参数也是函数如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false; `arry.every()` 用于检测数组中的所有元素是否满足指定条件,只有当数组中灭一个元素都满足条件时,表达式返回true , 否则返回false; `arry.filter()` 它创建一个新的数组,原数组不变,新数组中的元素是通过检查指定数组中符合条件的所有元素; `arry.join()` 把数组元素合并为一个字符串,如果不带参数,默认用逗号分隔; `arry.splice(index, hm, add)` 它既可以删除特定的元素,也可以在特定位置增加元素,也可以删除增加同时搞定,`index`是起始位置,`hm`是要删除元素的个数,`add`是要增加的元素; `arry.concat()` 用于连接两个或多个数组,返回值为连接后的新数组,原数组不变; `array.map(callback,\[ thisObject\]);` map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组; ~~~jsx var data = [1, 2, 3, 4]; var arrayOfSquares = data.map(function (item) {   return item * item; }); alert(arrayOfSquares); // [1, 4, 9, 16] ~~~