前端笔记-数组

原位修改

sortreversesplice 方法修改的是数组本身

数组方法

// 添加、删除元素
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)

解构赋值

  1. 基础知识点

    • 解构不会修改数组本身
    • 数组中不想要的元素也可以通过添加额外的逗号来把它丢弃
      let [firstName, , title] = ["Julius", "Caesar", "Consul"]
    • 可以将其与任何可迭代对象一起使用,而不仅限于数组 [a, b, c] = "abc"
    • 可以在等号左侧使用任何“可以被赋值的”东西
    • 可以将 .entries() 方法与解构语法一同使用,来遍历一个对象的“键—值”对
      for (let [key, value] of Object.entries(user)) {}
    • 用于交换变量值的典型技巧:[guest, admin] = [admin, guest]
  2. ...restrest 的值就是数组中剩下的元素组成的数组。不一定要使用变量名 rest,也可以使用其他的变量名,只要确保它前面有三个点,并且在解构赋值的最后一个参数位置上。
  3. 对象解构:let {width: w = 100, height: h = 200, title} = options;
  4. 嵌套解构

    let {
        size: { width,height}, // 对象
        items: [item1, item2], // 数组
        title
    } = options;

你可能感兴趣的:(javascript数组)