原位批改
sort
,reverse
和 splice
办法批改的是数组自身
数组办法
// 增加、删除元素
arr.push(...items) // 从尾端增加元素
arr.pop() // 从尾端提取元素
arr.shift() // 从首端提取元素
arr.unshift(...items) // 从首端增加元素
/* tips: 1、push 和 unshift 办法都能够一次增加多个元素。2、push、pop 办法运行的比拟快,而 shift、unshift 比较慢 */
// 重要罕用办法
let deleteItem = arr.splice(start,deleteCount,e1,e2,...) // 从 start 开始,删除 deleteCount 个元素,增加 e1,e2,..., 返回被删除的项
arr.slice(start,end) // 将 start 到 end(不蕴含)之间的项复制到一个新的数组
arr.concat(arg1,arg2...) // 承受任意数量的参数 (数组 / 值), 返回新数组
/* tips: 1、通常只复制数组中的元素。其余类数组对象,会被作为一个整体增加
2、例外:类数组的对象具备 Symbol.isConcatSpreadable 属性 */
arr.forEach(func)
// 数组中搜寻
arr.indexOf(item, index) // 从 index 开始搜寻 item,否则返回 -1。arr.lastIndexOf(item, index) // 同上,只是从右向左搜寻。arr.includes(item, index) // 从 index 开始搜寻 item,如果找到则返回 true
arr.find(func) // 搜寻使函数返回 true 的第一个项
arr.findIndex(func) // 搜寻使函数返回 true 的第一个项的 index
arr.filter(func) // 返回的是所有匹配元素组成的数组
// 转换数组
arr.map(func) // 对数组的每个元素都调用函数,并返回后果数组
arr.sort(sortFunc) // 对数组进行 原位(in-place)排序,更改元素的程序
arr.reverse() // 反转
str.split(divider) // 通过给定的分隔符 divider 将字符串宰割成一个数组, 有可选的第二个数字参数,对数组长度的限度。如果提供了,那么额定的元素会被疏忽。arr.join(divider) // 创立一串由 divider 粘合的字符串
// 不罕用的办法
arr.reduce((prevResult,item,index,array),initial)
/* tips: 1、该函数一个接一个地利用于所有数组元素,并将其后果保留到下一个调用。2、有初始值时作为第一个 prevResult,没有时数组第一个元素作为 prevResult,从第 2 个元素开始迭代 */
arr.reduceRight((prevResult,item,index,array),initial) // 同上,从右到左
Array.isArray(arr) // 判断是否为数组
arr.some(func) // 对数组的每个元素调用函数 func。如果任何后果为 true,则返回 true
arr.every(func) // 对数组的每个元素调用函数 func。如果所有后果为 true,则返回 true
arr.fill(value,[start,end]) // 填充数组
arr.copyWithin(target,start,end) // 从 start 到 end 的元素复制到本身的 target 地位
arr.flat([depth]) // 从多维数组创立一个新的扁平数组,depth 默认为 1 => arr.flatMap(func)
解构赋值
-
根底知识点:
- 解构不会批改数组自身
- 数组中不想要的元素也能够通过增加额定的逗号来把它抛弃
let [firstName, , title] = ["Julius", "Caesar", "Consul"]
- 能够将其与任何可迭代对象一起应用,而不仅限于数组
[a, b, c] = "abc"
- 能够在等号左侧应用任何“能够被赋值的”货色
- 能够将 .entries() 办法与解构语法一起应用,来遍历一个对象的“键—值”对
for (let [key, value] of Object.entries(user)) {}
- 用于替换变量值的典型技巧:
[guest, admin] = [admin, guest]
...rest
:rest
的值就是数组中剩下的元素组成的数组。不肯定要应用变量名rest
,也能够应用其余的变量名,只有确保它后面有三个点,并且在解构赋值的最初一个参数地位上。- 对象解构:
let {width: w = 100, height: h = 200, title} = options;
-
嵌套解构
let {size: { width,height}, // 对象 items: [item1, item2], // 数组 title } = options;