javascript 难点 数组

552 阅读3分钟

什么是数组,数组是干么的

数组:一个同类型数据的集合
数组的作用:存放数据

数组的声明

字面量声明法

var arr = [];//声明了一个空数组
var arr = [1,2,3,4]//边声明边赋值 数组中有1,2,3,4这4个值

//先声明,后赋值
var arr =[];
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;

构造函数声明法

var arr = new Array();
var arr = new Array(1,2,3)

数组的访问

数组下标

数组的访问,就是将数组中的值取出来。取出来的方法就是通过数组的下标。数组的下标是什么?打个比喻:
我们去华莱士买炸鸡,但是来华莱士买炸鸡的人太多了,于是大家开始排队,华莱士的店员还贴心的给每一个排队的客户发了取餐号码,叫到谁的号码,谁就来取餐。那这里的取餐号码就是我们说的数组下标了。
数组下标从0开始计算,例如有一个数组里面存放了1到9的数字,那么对应的下标就是如下图:

图片.png

利用下标取值

语法:数组名[下标] 例题:有一个数组arr[25,13,58,98,12],请取出98这个值
先看数组和下标的对应关系图

图片.png
上图得知98对应的下标是3,结合语法可得,获取arr数组中的98应该用arr[3]代码;

数组的长度

数组是由长度的,而且长度就等于存储值个数,数组中有几个值,长度就是多少。例如arr数组中有12,13,14,这3个值,那么数组的长度就是3。

如何获取数组长度

语法:数组名.length

数组的遍历

数组的遍历就是通过循环将数组中的每一个值都访问一遍。下面我们将结合数组的长度和小标了遍历数组

        //声明数组
        var arr = [122565481236];
        //循环数组
        for (var i = 0; i < arr.length; i++) {
            console.log(arr[i]);
        }

图片.png

for in遍历 var i 中的i是下标 for in会自动过滤数组中的空值

        for (var i in arr) {
            console.log(arr[i]);
        }

图片.png

for of遍历 var x 中的x是值

        for (var x of arr) {
            console.log(x);
        }

图片.png

数组的遍历可以帮助我们做很多事情,例如排序,从下到大,从大到小
冒泡排序和选择排序的文章 必看,一定要看

超级重点、超级重点、超级重点重要的话说三遍,数组的方法

  1. arr.push(val)往数组尾部追加值
  2. arr.pop()删除数组倒数第一个值
  3. arr.unshift(val)往数组的头部追加一个值
  4. arr.shift()删除数组中第一个值
  5. arr.join(符号)将数组中的值按照括号中的符号拼接成字符串
  6. arr.includes(val) 检查arr数组中是否包含val
  7. arr.indexof(val) 检查数组中是否包含val,返回数组中val的下标
  8. arr.concat(arr1,arr2) 合并数组,得到一个新数组
  9. arr.slice(开始角标,结束角标) 截取数组中从开始角标到结束角标的值,反回截取部分的数组(包含开始,不包含结束)
  10. arr.splice(角标,删除个数,要插入的值);
用法一:在任意位置插入值
splice(角标,0,v1,v2...)
用法二:删除值
splice(角标,删几个)
用法三:替换
splice(角标,替换几个,v1,v2...)
  1. Array.isArray(arr)判断是不是数组
  2. arr.sort();数组的排序
  3. arr.forEach(function(v){})//遍历数组,v是遍历数组的值
  4. arr.filter(function(v){return 条件(关系符号)v})//数组过滤器,判断需要比对数值与数组中值的关系,真就返回true,假就返回false
  5. arr.every(function(v){return 条件}) 只有数组中的每一值都满足条件才会返回真
  6. arr.some(function(v){return 条件})只要数组中有满足条件的就会返回真

上篇文章说的arguments其实就是一个伪数组,伪数组就是类似于数组的一种数据类型,所以数组中的所有操作都可以作用于arguments