数组常用方法整理

    xiaoxiao2025-03-30  18

    数组常用方法

    有序的值的集合 是一个对象 数组是使用数字作为索引的操作元素 索引:从0开始的整数 每一个数组都有元素,每一个元素在数值中都有一个位置,分别用数字表示

    创建方式:

    1.构造数组: var arr = new Array (); console.log(typeof arr); //object

    1>.向数组中添加元素 语法:数组[索引] = 值; arr[0] = 1;

    2>.读取数组中的内容 语法:数组[索引]; 索引超过最大取值,得到underfined

    var arr = new Array(); arr[0] = 1; arr[1] = 2; console.log(arr,arr.length); //1,2 2

    3>.获取数组长度,可以使用length属性,获取数组长度

    语法:数组.length 对于连续的数组,使用length可获取到数组的长度(元素的个数) 对于不连续的数组,使用length会获取到数组的最大索引+1; arr[100] = 24 console.log(arr.length); //101

    4>. 修改length 如果修改的length大于原长度,则多出部分会空出来; 如果修改的length小于原长度,则多出的部分会删除;

    var arr1 = new Array(); arr1[0] = 1; arr1[1] = 2; arr1[2] = 3; arr1[3] = 4; //console.log(arr1,arr1.length); arr1.length = 10; console.log(arr1,arr1.length); //如果修改的length大于原长度,则多出部分会空出来; arr1.length = 2; console.log(arr1,arr1.length); //如果修改的length小于原长度,则多出的部分会删除;

    数组的操作push/pop/unshift/shift

    1.push //从数组的尾部添加一个或多个元素,返回增加后数组的长度 2.pop() 从数组的尾部删除一个元素,返回这个删除的元素,原数组发生改变,不接受参数 3.unshift()从数组的头部增加元素,有几个参数增加几个元素,返回增加后的数组的长度,原数组发生改变 4.shift()从数组的头部删除一个元素,返回这个删除的元素,原数组发生改变,不接受参数

    截取方式:slice 和 splice

    slice: 原数组不发生变化 截取数据,返回原数据,需要将截取的数据封装到一个新数组中返回 第一个参数:截取开始位置的索引,包含起始索引 第二个参数:截取结束位置的索引,不包含结束索引 var a = arr(0,2); 第二个参数可以不写:可以截取从开始索引往后的所有元素 第二个参数可以是负值:则从后往前截取 -1:即位置为最后一个 splice: 原数组发生变化 截取数据,用来删除数据中指定的元素 需要将截取的数据封装到一个新数组中返回 使用splice会影响到原数组,将指定的元素从数据中删除 并将删除的元素作为返回值返回 参数: 第一个参数:开始位置的索引 第二个参数:删除的数量 第三个参数:可以传递一些新的元素,这些元素将自动插入到开始索引位置的前面 var arr = ["孙","猪","唐","莎"]; var b = arr.slice(0,2); console.log(b); //孙 猪 console.log(arr); //孙 猪 唐 莎 var a = arr.splice(1,1,"牛魔王"); console.log(a); //猪 console.log(arr); //孙 牛魔王 唐 莎

    join() 将数值转换成字符串 不会对原数据产生影响,会把转化后的字符串作为结果返回 在join()中可以指定一个字符串作为参数,这个字符串将会作为数组中元素的连接符 如果不指定连接符,默认为, reverse(): 用来反转数组,前面的去后面,后面的去前面; 该方法会直接修改原数据

    var arr6 = ["孙","猪","唐","莎"]; //result = arr6.join("hello"); //console.log(result); arr6.reverse(); console.log(arr6); var arr7 = ["c","j","f","h","t"]; arr7.sort();默认从小到大 arr7.reverse();//可以反着来 console.log(arr7);

    sort(): 用来对数组进行排序 会直接修改原数据 默认会按照Unicode编码排序

    可以在sort()中添加一个回调函数,来指定排序规则 回调函数中定义两个形参 浏览器分别使用数组中的元素作为实参调用回调函数 使用哪个元素不一定,但是肯定的是a在b的前面; 浏览器会根据回调函数的返回值来确定元素的位置 返回一个大于0,则会交换位置 返回一个小于0,则位置不变 返回一个等于0的值,则位置不变

    var arr8 =[1,5,6,8,11]; arr8.sort(); //console.log(arr8); //1,11,5,6,8 arr8.sort(function (a,b){ return a-b; //如果从大到小 return b-a }); console.log(arr8);//1,5,6,8,11

    总结: 原数组发生变化: pop push unshift shift splice reverse sort

    原数组没有发生变化: slice join

    ES5新增数组方法:

    1.forEach: 不接受返回值 forEach()方法需要一个函数作为参数 数组中有几个元素,函数就执行几次,每次执行时,浏览器会将遍历到的元素以实参形式传递进来,可以定义形参来读取内容 第一个参数 value:当前正在遍历的元素 第二个参数 index:当前正在遍历的元素的索引 第三个参数 obj:正在遍历的数组 forEach方法无法中断执行,总是会将所有成员遍历完。如果希望符合某种条件时,就中断遍历,要使用for循环。

    2.map():对数组的所有成员一次执行参数函数 接受返回值 原数组没有发生变化

    var arr = [1,2,3,5]; var a = arr.forEach(function(item){ //console.log(item); return item+1; }); var a = arr.map(function(item){ //console.log(item); return item+1; }); console.log(a); var b = arr.filter(function(item){ return item>2; }) console.log(b); //3,5 var arr = [1,2,3,5]; console.log(arr.indexOf(5),arr.indexOf(11)); //3, -1 var a = arr.some(function(item){ return item>2; }) console.log(a); //true var a = arr.every(function(item){ return item>2; }) console.log(a); //false

    3.filter(): 用于过滤数组成员,满足条件的成员组成一个 新数组返回 原数组不变 它的参数是一个函数,所有数组成员一次执行,返回结果为 true 的元素组成一个新数组返回 第一个参数:当前成员 第二个参数:当前成员的索引 第三个参数:整个数组

    4.indexOf(): 从 头部 返回某个元素(第一次出现)在数组中的索引,没有该元素则返回 -1, 可以判断一个数组中是否有某个元素

    lastindexOf(): 从 尾部 开始返回某个元素(最后一次出现)在数值中的索引, 没有该元素则返回 -1

    5.some() every(): 返回布尔值,表示判断数组成员是否符合某条件、 参数为一个函数,成员一次执行 some(): 一个成员值为true 则为true every();所有成员值为true ,则为true

    6.reduce(): 将内部的返回值作为实参传递第一个形参,进行下一次运算

    var arr =[1,2,3,5] var sum = arr.reduce(function(a,b){ return a+b; }); console.log(sum); //1+2+3+5=11 var users = [ {name: 'tom', email: 'tom@example.com',age:16}, {name: 'peter', email: 'peter@example.com',age:18} ]; users .filter(function (person) { return person.age>=18; }) .forEach(function(e){ console.log(e) });
    最新回复(0)