数组

数组

  • 一般用来存放相同类型的数据

  • 数组的特性
    ⇨length属性,表示长度(集合中参数/元素的个数)
    ⇨可以通过下标取值或赋值,下标最大值为length-1
    ⇨可以被循环遍历

  • 空数组,数组中没有任何元素(数组中存放的每一个数据都称为元素)
  • 创建数组的方式
    ⇨字面量/直接量
       Var arr = [ ... ];
    ⇨构造函数的创建方式
    官方提供的专门创建数组的方法(Array)
    Var arr = new Array();//通过构造函数创建一个新的数组
    注意如果new' Array()只接收一个参数,且数据类型是number时,会生成对 应长度的数组,即10为数组长度;但如果数据类型不是number时,会将该参数 作为数组的元素放在数组中。

  • 数组的递增赋值
    ⇨在数组尾部(所有元素的最后面)添加一个新的元素,arr[arr.length]
  • 数组的常用方法
    ⇨数组中的增删改,有一个数组var list=[ “a”,“b”,“c”,“d” ]
        在数组尾部新增一个或多个元素,多个元素用逗号隔开
    ⇨push();方法,返回值为新增元素后数组的长度,会影响原数组(长度)
       list.push(999);表示在list数组后添加一个第四个元素,内容为999
       在数组的头部新增一个或多个元素
    ⇨unshift();方法返回值为新增元素后数组的长度,会影响原数组(长度)
       list.unshift(1,2);表示在list数组前添加两个元素,内容分别为12和2
       删除数组尾部的元素
    ⇨pop();方法,返回值为被删除的元素,会影响原数组(长度)
       list.pop();表示删除数组尾部的元素
       删除数组头部的元素
    ⇨shift();方法,返回值为被删除的元素,会影响原数组(长度)
       list.shift();表示删除数组头部的元素
    ⇨splice()方法
    ↘splice(startInsdex,length);删除,startInsdex表示起使下标,删除length个元素
       list.splic(1,2);表示自下标为1的位置开始,删除后面的两个元素,返回值为被删 除的数组,会影响原数组
       最终结果为[ “a”,“d” ]

    ↘splice(startInsdex,0,arr1,arr2...arrN);新增,startInsdex表示起使下标,0表示不删除元素
       list.splic(1,0,“hello”);表示自下标为1的位置开始,新增一个或多个元素,返回值 为空数组,因为被删除的数组,会影响原数组
    最终结果为[ “a”,“hello”,“b”,“c”,“d” ]

    ↘splice(startInsdex,length,arr1,arr2...arrN);修改,startInsdex表示起使下标,删除length个元素,新增arr1...元素
    list.splic(1,2,“hello”,“world”);表示自下标为1的位置开始,删除后面的两个元 素,并新增两个元素hello和world,返回值为被删除的数组,会影响原数组
    最终结果为[ “a”,“hello”,“world”,“d” ]

    ⇨reverse();方法,表示数组反转,返回值为反转后的原数组,会改变原数组
    最终结果为[ “d”,“c”,“b”,“a” ]
    ⇨slice(startInsdex,endInsdex);方法,表示数组的裁切,startInsdex表示起始下标,endInsdex表示终止下标,返回值为被裁切的元素形成的新数组,不会改变原数组
    list.slice(1,3);表示裁切下标为1到小于小于下标为3之间的元素,如果不传入参 数,会使用默认值,得到一个与原数组相同的新数组,相当于复制了一个原数组。不会影响原数组
    [ “b”,”c” ]
    ⇨concat();方法,表示数组的拼接,将多个数组或元素拼接形成一个新的数组,不会影响原数组,如果拼接的是数组,则会将数组展开,再把该数组中的每一个元素放在新数组中,如果是其他类型,会直接将其放在新数组中,不会改变原数组。如果不传参数会得到一个与原数组相同的新数组。不会影响原数组
    list.concat(arr,brr,“hello”);表示list数组拼接数组arr和brr,也可以拼接元素
    ⇨includes();方法,表示判断数组中是否存在某个元素,如果存在返回true,反之则为false,注意此方法是ES6新增的,存在兼容问题。不会影响原数组
    list.includes(“a”);返回值为true;
    ⇨indexOf();方法,表示返回某个元素在数组中第一次出现的位置,如果存在该元素会返回下标,如果不存在会返回-1;可以通过返回值来变相判断是否存在该元素。此方法是属于ES5的方法。不会影响原数组
    list.indexOf(“a”);返回值为1
    ⇨join(char);用特定的字符,将数组拼接形成字符串,不会影响原数组
    list.join(“-”);输出结果为a-b-c-d,如果需要输出结果为abcd,就可以将参数改为 空字符串,如果不传入参数,默认会使用逗号(,)拼接
    ⇨sort();方法,表示将从小到大的顺序元素排列,会影响原数组,其中有两种用法
    ↘字符排序
    根据字符在ASCII码表的位置进行排序,为sort方法的默认排序方式,返回值为 排序后的原数组,会改变原数组
    ↘纯数字排序
    list.sort(function (a,b){//a和b为形参,代表前后两个数值
    return a-b;//可理解为a-b>0,前一个数大于后一个数时交换位置,即从小 到大排序
    return b-a;//b-a>0,a<b,从大到小排列
    });
    ⇨forEach();方法,表示遍历数组,每次循环中执行传入的回调函数
    list.forEach(function (item,index,array){
    console.(item);//打印每次循环的元素
    console.(index);//打印每次循环的当前下标
    console.(array);//打印原数组
    })
    ⇨map();方法,表示遍历数组,每次循环中执行传入的回调函数,根据回调函数的返回值生成一个新的数组,最后输出的值为一个元素只有”1“的新数组,长度则为list的长度
    list.map(function(){
    return “1”;
    })
    ⇨filter();方法,表示遍历数组,每次循环中执行传入的回调函数,回调函数返回一个条件,把满足条件的元素筛选出来放到新数组中
    list.filter(function (item,index,array){
    return item>=60;//把满足条件的元素返回到新数组中
    })
    ⇨some();方法,表示遍历数组,每次循环中执行传入的回调函数,回调函数返回一个条件,只要有一个元素满足条件,就返回true,都不满足就返回false,可以判断数组中是否存在满足某个条件的元素
    list.some(function (item,index,array){
    return item>=60;
    })
    ⇨every();方法,表示遍历数组,每次循环中执行传入的回调函数,回调函数返回一个条件,全都满足返回true,只要有一个不满足,就返回false
    list.every(function (item,index,array){
    return item>=60;
    })
    ⇨reduce();方法,表示遍历数组,每次循环中执行传入的回调函数,回调函数会返回一个值,将该值作为初始值prev,传入到下一次函数中,prev为初始值,也可以通过reduce的第二个参数设置初始值(红色字体),如果不设置初始值默认是数组中的第一个元素,遍历时从第二个元素遍历,返回值为最终求取结果
    list.reduce(function (prev,item,index,array){
    return prev + item;//prev为初始值(类似求和sum)
    },0
    ⇨reduceRight();方法,用法与reduce一样,只不过是从右往左
    list.reduce(function (prev,item,index,array){
    return prev + item;//prev为初始值(类似求和sum)
    })
  • 学习数组的常用方法需要注意的地方
    ⇨完成什么功能
    ⇨返回值
    ⇨是否影响原数组,有些方法会在原数组上修改,有些方法会返回一个新数组(不改变原数组)
  • For...in遍历数组,返回数组的下标,语法:
    for(var i in arr){
    console.log(i);
    }
  • For...of,遍历数组,返回数组的每一个元素,语法:
    for(var i of arr){
    console.log(i);
    }
  • 伪数组
    ⇨又称类数组,表示有数组的特性(length,下标取值,可以被循环遍历,不建议用fo...in,使用for...in虽然可以被遍历,但是会多出一些属性),但是不能使用数组的方法(push(),concat()等方法)
    ⇨如果需要使用数组的方法,就可以将伪数组转化为真数组
    ↘新建一个数组,将伪数组中的每一个元素放到新数组中
    ↘借助构造函数Array的方法
    Array.from();//表示接收一个伪数组,返回对应的真数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值