JavaScript数组及数组中常用方法

本文详细介绍了JavaScript数组的基础操作、遍历方法、常用API及其高级应用,包括数组的创建、增删改查、各种遍历技巧及高级方法的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 数组

1.1 创建数组对象

  1. 通过字面量创建数组:

    var arr=[10,20,30,40];
  2. 通过构造函数创建对象

    var arr1= new Array(10,20,30,40);
  • 数组中的元素是可重复且有序的

注意:用构造函数创建一个数组对象时,如果传入的只有一个参数且这个参数为整数时,此时这个参数会被认为是数组的长度

如 :

var arr2=new Array(10);
console.log(arr2.length);
//输出的是10 ,且数组中为空
  • 数组中的长度是可以动态改变的arr2.length=值;

1.2 数组基本操作

数组中的元素都有一个索引,索引从0开始,到数组名.length-1结束

  1. 访问数组中的元素

    arr[索引]

    索引超出正常的范围之后, 并不会抛出异常, 而是返回一个undefined

  2. 向数组中添加元素

    arr[10]=200;

    如果数组中不存在10这个索引,则会在10这个索引的地方添加一个200;然后前面如果没有元素就是为空

  3. 修改数组中的元素

    arr[2]=20;

    如果有2这个索引,则会修改它的值为20,如果没有,则会自动添加进去.这个元素就会成为最后一个元素

  4. arr[arr.length] = 10在数组的尾部添加元素

1.3 数组的遍历

  1. 通过for循环

    var arr=[10,20,10];
    for(var i=0; i<arr.length;i++){
        arr[i]
    }
  2. 通过for in

     var arr=[10,20,10];
        for(var i in arr) {
            console.log(arr[i]);
        }
    ​
  3. 通过 for of

    // for...of, 是es6新增的一种遍历方式, 他遍历出来的是数组中的具体的元素
    // 通过for...of只能读取到数组中元素, 不能修改数组中的元素.等于是复制一遍arr中的值给a
     var arr=[10,20,10];
    for(var a of arr){
        console.log(a);
    }
  4. 通过forEach

     var arr=[10,20,10];
    arr.forEach(function (ele, index, self){
      console.log(ele);
    })

forEach的内部实现方法

  //往原型中添加一个myForEach方法
    Array.prototype.myForEach = function (fun) {  // fun是传进来的参数
        for(var i=0;i<this.length;i++){
            //fun(this[i],i,this);  //调用的时候把实参赋给形参
​
        }
    };
    var arr = new Array(10,20,30,40);
    arr.myForEach(function (ele,index,self) {     // 声明一个函数,让myForEach去调用并传递实参过来
            console.log(ele,index,self);
    });
​

1.4 数组的常用方法

1.4.1 toString方法

将数组中的每一个元素转换为一个字符串,然后用逗号隔开

undefinednull会被变成""长度为0的字符串

1.4.2 join方法

arr.join("连接符")

1.4.3 push方法

向数组的末尾添加元素,可以添加多个

1.4.4 pop方法

删除数组末尾的元素

1.4.5 unshift方法

向数组的开头添加一个或多个元素

1.4.6 shift方法

删除开头第一个元素

var arr=[20,22,12]
while (arr.length > 0){
    console.log(arr.pop());
}

2. 数组的方法

一般开始位置和结束位置都是包括开始位置,不包括结束位置

...arr展开数组arr

2.1 splice方法

splice方法会改变原数组

splice()方法可以完成任意位置的删除,添加,替换

语法:

参数一:开始操作的位置的索引,如果不写,默认是0

参数二:删除的个数,如果不需要删除则传入0

参数三,参数四...参数n:添加的元素

返回值是由删除元素组成的新数组

var arr = [1,2,3,4,5];
//将索引为3的元素替换为100
arr.splice(3,1,100);
//在索引为2的元素前添加元素99,98
arr.splice(2,0,99,98);
console.log(arr);

2.2 reverse方法

reverse方法会改变原数组

reverse方法是对数组进行倒置

返回值也是倒置后的数组

var arr = [1,2,3,4,5];
arr.reverse();
console.log(arr);  //5,4,3,2,1

2.3 查找元素索引方法(indexOf)

indexOf方法不会改变原数组

arr.indexOf(元素)从前往后开始查找元素在arr数组中第一次出现的位置的索引

返回值是索引或者-1 (如果没有找到该元素则返回-1)

也可以指定第二个参数为开始查找的位置,默认是从索引为0开始找

lastindexOf是从后往前找,也可以指定第二个参数,为开始查找的位置

2.4 concat方法

concat方法不会改变原数组

concat方法是用来连接两个数组的

var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = arr1.concat(arr2);
console.log(arr1,arr2,arr3);
//不会改变arr1和arr2和值,将连接起来的数组结果作为返回值返回

2.5 slice方法

slice方法不会改变原数组

slice方法是用来截取数组的,截取到的元素将封装到一个数组中作为返回值返回

语法:

参数1:截取的开始索引位置,如果不提供参数1,则默认是0;

参数2:截取的结束位置,如果不提供参数2,则默认截取到数组的末尾

注意:

  1. 参数2必须大于参数1,否则截取不到元素

  2. 参数也可以是负数,如果是负数的话,则是倒着数,如-3就是倒数第3个

3. 数组测试

使用Array.isArray(测试对象)来测试对象是否是数组类型,如果是返回true,如果不是,返回false

像这种直接使用构造函数.方法名的方法称为静态方法

4, 静态方法

静态方法就是直接用构造函数.方法名

这种方法是由构造函数自己定义,所以就算是构造函数new出来的对象也是访问不到的

 function Person(name) {
        this.name=name;
    }
    Person.isPerson=function () {   //这就是一个静态方法
        console.log("hhh");
    }
    var p1=new Person("小猪");
    //p1.isPerson();  //错误,不存在这个方法
    //p1.__proto__.isPerson();  //错误,证明原型中是肯定不存在的
    //console.log(p1.__proto__.constructor == Person);   //true
    //p1.__proto__.constructor.isPerson();  //正确  因为构造器指向的是构造函数本身
    //console.log(Person.prototype.constructor == p1.__proto__.constructor);  //true

5. 三种高级方法

 三种方法都不会改变原数组的值,而是将结果作为返回值返回
        1.map()方法  映射
        2.filter()方法  过滤
        3.reduce()方法  归纳
     */
    var arr = [10, 20, 30, 1, 2, 3];
    var arr1 = arr.map(function (ele) {
        //ele 就代表了arr对象中的每个元素
        return ele * ele;
    });
​
    //console.log(arr1);
​
    var arr2 = [10, 11, 12, 13, 14];
    var arr3 = arr2.filter(function (ele, index, self) {
        //ele代表arr对象中的元素,index代表数组中每一个索引,self代表arr本身
        return ele % 2 && index % 2;  //返回元素为奇数且索引也为奇数
    });
    //console.log(arr3);
​
    var arr4 = [9, 5, 2, 4, 1, 19];
    var arr5 = arr4.reduce(function (last,ele) {
        //last代表上一次归纳好的值,ele代表每个元素初始值为0
        //就是0与ele先归纳,归纳的值赋给last.  不给初始值也是一样的,就是直接第一个和第二个归纳
        return last+ele*ele;   //返回所有元素平方的和
    },0);
    console.log(arr5);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值