js数组

目录

  • 数组是应用数据类型中的对象数据类型(特殊对象)

    1. 创建一个对象也要开辟一个堆内存,堆内存中存储数组对象的键值对

      let arr=[10,20,30];
      conosle.log(arr);
      //输出:
       0: 10
       1: 20
          2: 30
       length: 3
      
    2. 数组中我们看到的每一项都是属性值,默认属性名是数字,数字从零开始递增,数字代表当前的第几项,我们把代表位置的数字属性名称为"索引";数组是以数字为索引,索引从零开始的结构!

    3. 在数组中默认存在一个length属性,代表着数组的长度(有多少项)

      let arr=[20,39,54];
      console.log(arr.length);//3
      
    4. 数组中存在的每一项可以是任意数据类型

      let arr=['aaa',{name:'teal'},20,function(){}];
      console.log(arr);
      // 输出
      	0: "aaa"
          1: {name: "teal"}
          2: 20
          3: ƒ ()
          length: 4
      
  • 项目使用

    • 真实项目中,我们把从服务器获取到的数据一般都是对象或者数组(json格式),而且结构层次一般都是多级结构
      1. 一维数组(只有一级结构)]
      2. 二维数组(也叫多维数组,有两级或以上结构)
  • 数组中常用的内置方法

    1. 关于数组的增删改

      • push:向数组末尾追加元素
        1. params: 参数个数不固定,类型也不固定,都是向数组末尾依次追加内容
        2. return :返回的结构为新增加后数组的长度
        3. 原始数组发生变化
        let arr=[10,20,30];
        let result=arr.push(40,'50');
        console.log(arr);//[10,20,30,40,'50'];
        console.log(result);//5
        
      • pop:删除数组中最后一项内容
        1. params:参数为空
        2. return:返回结果为删除的内容
        3. 原始数组改变
        let arr=[10,20,30];
        let result=arr.pop();
        console.log(arr);//[10,20]
        console.log(result);//30
        
      • unshift:向数组开头位置新填内容
        1. params:参数个数不定,类型不定,都是要依次在数组前新添内容
        2. return:返回的结果为添加后数组的长度
        3. 原始数组改变
        let arr=[10,20,30];
        let result=arr.unshift(0,'1');
        console.log(arr);//[0,'1',10,20,30]
        console.log(result);//5
        
      • shift:删除数组中第一项内容
        1. params:参数为空
        2. return:返回的结果为被删除的内容
        3. 原始数组改变
        let arr=[10,20,30];
        let result=arr.shift();
        console.log(arr);//[20,30]
        console.log(result);//10
        
    2. 指定位置的增删改

      • splice(n,m):删除指定位置的内容
        1. params: 从数组中索引为n的地方开始,删除到m个元素
        2. return: 返回的结果是删除的内容(以数组类型展示)
        3. 原始数组改变
        let arr=[1,2,3,4,5,6];
        let result =arr.splice(1,3);
        console.log(arr);//[1, 5, 6]
        console.log(result);// [2, 3, 4]
        
      • splice(n,m,x1,x2,…): 修改指定位置数组的内容
        1. params: 从索引n开始,删除m个元素,用x1(或多个值)替换删除后的内容
        2. return: 返回的一个数组.数组中是删除的内容
        3. 原始值发生变化
        let arr=[1,2,3,4,5];
        let result=arr.splice(0,2,'1',2.2);
        console.log(arr);//['1',2.2,3,4,5]
        console.log(result);//[1,2]
        
      • splice(n,0,x1,x2,…):在指定的位置添加内容
        1. params:从索引n开始,一个都不删除,把x1(或更多值)插入到索引n的前面
        2. 返回结果为空数组
        3. 原始数组发生改变
        let arr=[1,2,3,4];
        let result=arr.splice(1,0,1.1,1.2);
        console.log(arr);//[1, 1.1, 1.2, 2, 3, 4]
        console.log(result);// []
        
      • splice(0):删除数组中所有的内容
        1. params:从索引0开始,一直删除到数组的末尾
        2. return:返回值为整个被删除的的数组
        3. 原始数组发生改变
        let arr=[1,2,3,4];
        let result=arr.splice(0);
        console.log(arr);//[]
        console.log(result);//[1,2,3,4]
        
    3. 关于数组的查询

      • slice(n,m):实现数组的查询(数组指定位置的截取)
        1. params: 从数组n出开始查询,查询到索引为m处(不包含m)
        2. retutn: 返回的结果以新数组的展示
        3. 原始数组不变
        let arr=[1,2,3,4,5,6];
        let result=arr.slice(2,4);
        console.log(arr);//[1,2,3,4,5,6]
        console.log(result);//[3,4]
        
      • slice(n):查询指定位置后面所有的内容
        1. params: 从数组n的位置开始查询,一直查到数组的末尾
        2. return: 返回的结果是n后面所有的值,并以新数组展示
        3. 原始数组不变
        let arr=[1,2,3,4,5,6];
        let result=arr.slice(2);
        console.log(arr);//[1,2,3,4,5,6]
        console.log(result);//[3,4,5,6]
        
      • slice(0):查询数组中所有的内容
        1. params: 从索引0的位置开始截取,一直截取到最后,可以理解为把原始数组中的每一项都查询到
        2. return : 返回新的数组,实行数组的浅克隆,得到的新数组和原始数组是两个不同的数组(连个不同的堆内存),但是堆内存中存储的内容是一致的
        3. 原始数组不变
        let arr=[1,2,3,4,5];
        let result=arr.slice(0);
        console.log(arr);//[1,2,3,4,5]
        console.log(result);//[1,2,3,4,5]
        
    4. 数组的拼接

      concat(x1,x2,…):实现数组的拼接
      1. params:把多个数组(或多个值)最后拼接成一个数组
      2. return: 返回结果为拼接后新的数组
      3. 原始数组不变
      let arr1=[1,2,3];
      let arr2=[6,7,8];
      let result=arr1.concat('4',5,arr2);
      console.log(arr1);//[1,2,3]
      console.log(arr2);//[6,7,8]
      console.log(result);//[1,2,3,'4',5,6,7,8]
      
    5. 数组转换为字符串

      • toString();
        1. params:把数组中的每一项按照"逗号分隔",拼接成对应的字符串
        2. 原始数组不改变
        let arr=[10,20,30];
        console.log(arr.toString());//"10,20,30"
        
      • join([char]);
        1. char:以指定的字符分隔成对应的字符串

        2. 原始数组不改变

          let arr=[10,20,30,40];
          console.log(arr.join(''));//'10203040' =>以空格分隔数组
          
    6. 获取数组中指定的索引

      • indexOf([value]);获取当前项在数组中第一次
        1. params:获取指定位置的索引
        2. return:返回结果为出现位置的索引,不存在返回-1
        3. 原始数组不变
        let arr=[10,20,30,40,50];
        let result1=arr.indexOf(30);
        let result2=arr.indexOf(60);
        console.log(arr);//[10,20,30,40,50]
        console.log(result1);//2
        console.log(result2);//-1
        
      • lastIndexOf([value]);获取最后出现的索引
        1. params: 获取指定位置的索引
        2. return: 返回最后一次出现位置的索引,如果不存在返回-1
        3. 原始数组不变
        let arr=[1,2,3,4,3,4,3];
        let result1=arr.lastIndexOf(3);
        let result2=arr.lastIndexOf(5);
        console.log(arr);//[1,2,3,4,3,4,3]
        console.log(result1);//6
        console.log(result2);//-1
        
      • includes([value]):验证数组中是否包含指定内容
        1. params:指定的内容
        2. return: 返回结果存在返回true,不存在返回false
        3. 原始数组不改变
        let arr=[1,2,3,4,5];
        console.log(arr.includes(2));//true
        console.log(arr.includes(6));//false
        
    7. 反转与排序

      • reverse(); 数组反转
        1. params:无参数
        2. return:返回的结果是排列后原始的数组,原始数组改变(因反转后原始数组===排列后的数组,所以一般不需要返回值,直接输出原始值即可)
        3. 原始数组改变
        let arr=[1,2,3,4,5];
        console.log(arr.reverse());//[5,4,3,2,1]
        
      • sort; 数组排序
        1. param:回调函数
        2. return: 返回把原始数组按照规则进行排序后的值
        3. 原始数组会发生改变
        let arr=[2,4,5,1,3];
        console.log(arr.sort());//[1,2,3,4,5]
        
        • sort可以对单位数进行有效排序
        • sort支持传递回调函数,基于自定义排序规则
        • sort(a,b):在回调函数中,有两个形参.可以进行排序(返回a-b可以得到升序结果,b-a可以得到降序结果)
        let arr1=[3,2,4,1,6,5];
        let arr2=[3,2,4,1,6,5];
        let result1 =arr1.sort(function(a,b){
        	return a-b;
        });
        let result2 =arr2.sort(function(a,b){
        	return b-a;
        });
        console.log(result1);//[1,2,3,4,5,6]
        console.log(result2);//[6,5,4,3,2,1]
        
    8. 数组中常用的迭代方法(遍历数组中的每一项)

      • forEach([函数]);遍历数组中的每一项(数组中有多少项,函数会相继执被执行多少次),每一次执行函数,都可以在函数中获取当前的遍历的这一项个对应的索引
        1. forEach中有一个回调函数,形参为item,index
        2. item:表示当前项的内容
        3. index:表示当前项的索引
        let arr=[1,2,3];
        arr.forEach(function(item,index){
        	console.log(item);// 1 > 2 > 3
        	console.log(index);// 0 > 1 > 2
        });
        
      • map:forEach是不支持返回值的,而map可以在forEach的基础上支持返回值,把原来数组中每一项的值替换为新值,最后存储在一个新的数组中,但原始数组不变
        1. map支持返回值但是不会改变原来的数组,执行完的返回结果是修改后的新数组
        2. map中有一个回调函数,函数中有两个形参item,index
        3. item:当前循环的这一项的值
        4. index:当前值的对应的索引
        5. 函数返回啥都是把数组中当前项替换成啥,但原始数组不变
        let arr=[1,2,3,4];
        let result= arr.map(function(item,index){
        	return item*10;
        });
        console.log(result);//[10,20,30,40]
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值