前端从入门到入土系列-JavaScript数组

98 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,今天给大家分享JavaScript数组(Array)。

一、定义

      存储一系列有序数据的集合。

二、创建方式

  
      1.字面量方式
          var arr = []
      2.构造函数
          var arr = new Array()
      3.注意事项
          构造函数创建数组时,值写一个值时,这个值表示数组能存储的数组元素个数。

三、数组元素访问

  
      通过数组的索引号(下标)访问数组元素,索引号由0开始。
      数组名[索引号]

四、数组的属性和方法

  
      1.属性
          length,查询数组的长度或元素个数
      2.数组的常用方法
          1.push():在数组末尾追加元素
          2.pop():删除数组末尾元素
          3.unshift():在数组最前面追加元素
          4.shift():删除数组最前面的元素
          5.splice():删除数组中的某些元素,按照数组的索引号来删除,也可以替换内容
              数组名.splice(索引号,数量,替换内容)
          6.reverse():反转数组元素
          7.sort():数组元素排序
              规则:按照字典顺序排序,选比较第一位,再比较后面的位数
              由小到大的排序
              数组名.sort(function(a,b){
                  return a-b
              })
              由大到小的排序
              数组名.sort(function(a,b){
                  return b-a
              })
          8.concat():拼接两个数组,返回一个新数组
          9.join():把数组里面的元素通过字符进行拼接,变成一个字符串。
          10.indexOf():返回元素索引号
              如果元素不存在,则返回-1
              应用场景:先判断元素是否再数组中
      3.数组的遍历
          1.采用for循环进行遍历
          2.forEach():遍历每一个对象
          3.map():遍历数组,可以每一个元素进行操作,返回新数组;
              作用:遍历数组,映射返回一个新数组
          4.filter():遍历数组,找到满足条件的元素,返回新数组
          5.find():遍历数组,找到满足条件的第一个元素,返回这个元素。
          6.every():数组中每一元素都满足条件,返回true
          7.some():数组中只要一个元素满足条件,返回true
          8.reduce():遍历数组,数组中每一个值从左到右开始累加,得到一个累加和
              语法:
              var sum = arr.reduce(function(s,item,index){
                  return s+item
              },0)
              第二个参数为初始值

五、数组排序算法

  
      1.作用
          将一个乱序的数组变成一个有序的数组
      2.元素位置的交换
          思路:借助三方变量完成交换位置
              var temp = arr[i]
              arr[i] = arr[j]
              arr[j]=temp
      3.冒泡排序
          思路:挨着两个元素进行两两比较,前一个数比后一个数大,则交换位置。
          万能公式:
          对n个元素的数组进行排序,外层循环n-1轮冒泡排序,内层循环n-1-冒泡轮数。挨着两个元素进行两两比较。
          var n = arr.length
          for(var i = 0;i<n-1;i++){
              for(var j = 0;j<n-1-i;j++){
                  if(arr[j]>arr[j+1]){
                      var temp = arr[j]
                      arr[j] = arr[j+1]
                      arr[j+1] = temp
                  }
              }
          }
      4.选择排序
          思路:首先在未排序的数组中找到最小(最大)元素,存放在未排序数组的起始位置(交换位置);再从剩余为排序元素中继续寻找最小(最大)元素,放到已排序元素的末尾,反复查找,直到所有元素排序完成。
          万能公式:
          var n = arr.length
          外层循环为选择排序次数,n个数进行n-1次选择排序
          for(var i = 0; i< n - 1;i++){
              var minIndex = i // 默认i为最小数的下标,将i值赋值给最小下标
              for(var j = i+1; j<n;j++){
                  if(arr[j] < arr[minIndex]){
                      minIndex =j    //判断下标为j的元素是否比最小下标小,如果小,则将j赋值给最小下标
                  }
              }
              var temp = arr[i]
              arr[i] = arr[minIndex]
              arr[minIndex] = temp
          }

六、数组去重

  
      1.利用indexOf
          定义一个新数组,用于存储不重复的元素;遍历原数组,判断元素是否存在新数组中,如果新数组中不存再,则添加到新数组中。
      2.利用splice
          让第一个元素与后面的所有元素比较,相同,则截取。

\