数组方法

164 阅读5分钟

数组方法

push()

在数组的尾部添加若干个元素

参数:要增加的元素,可以是多个

返回值:新数组的长度

修改原数组

while(arr.push({})<10); 循环给尾部添加若干个元素

pop()

删除最后一位

参数:无

返回值:删除的元素

修改原数组

while(arr.pop()!==3); 删除到某元素为止,同时该元素也会被删除

如果数组中存储的是对象,我们必须将所有的对象引用全部设为null

  • while和for都可以,for的效率更高

    • while(arr.length>0){ arr[arr.length-1]=null; arr.pop(); }
    • for(var i=0;i<arr.length;i++){ arr[i]=null; } arr.length=0;

unshift()

在数组的头部添加若干个元素

参数:要增加的元素,可以是多个

返回值:数组增加之后的长度

修改原数组

shift()

将数组的头部一个元素删除

参数:无

返回值:删除的元素

修改原数组

join()

使用某个字符作为连接符,将所有数组的元素连接成为一个字符串

参数:转成字符之后,每个数据之间的连接符(如果连接符没有,默认以逗号连接)

返回值:转换的字符串

不修改原数组

concat()

数组连接若干个数组或者元素

参数:要连接的元素,可以是多个

返回值:连接完成的数组

不修改原数组

splice()

删除元素,并向数组添加新元素

参数:

两个:1起始索引,2删除个数,不插入数据,只删除 两个以上:1起始索引,2删除个数,之后 删除,并插入后面的元素

返回值:删除了的元素

修改原数组

举例

  • var arr1=arr.splice(1);//删除到尾部
  • var arr1=arr.splice(-1);//如果第一个参数是负数,从后向前数开始删除
  • var arr1=arr.splice(0);//将一个数组的所有元素转移到另一个数组
  • var arr1=arr.splice();//没有删除返回空数组
  • var arr1=arr.splice(-3,2);//从倒数第3个元素向后删除2个元素
  • var arr1=arr.splice(1,2,-2,-3);//从第一位开始向后删除两个元素,并且在该位置插入-2和-3,替换,并且返回被删除两个元素组成的数组
  • var arr1=arr.splice(1,arr.length,0,-1,-2);//从某个位置开始删除到数组的尾部
  • var arr1=arr.splice(1,0,0);//在第一位插入一个元素0,不删除,返回空数组

slice()

从第几项开始到第几项结束复制这些元素到新数组中

参数:

一个:表示从指定位置开始截取,到结束 两个:表示从指定位置到结束位置的前一个

返回值:截取并拷贝出来的新数组

不修改原数组

举例

  • var arr1=arr.slice(0);//复制数组
  • var arr1=arr.slice();//复制数组
  • var arr1=arr.slice(-2);//从后向前数第2个元素到尾部的所有元素复制
  • var arr1=arr.slice(1,2); //从第一项复制到第二项,不包括结束这一项

拓展:将列表转换为数组

  • ES6 列表型强转数组 Array.from(divs);
  • Array.prototype.slice.call(divs);或[].slice.call(divs);
  • Array.prototype.concat.apply([],divs);或[].concat.apply([],divs);

sort()

排序

参数:函数:function(m,n){return n-m;} m-n数值升序,n-m数值降序

返回值:排序之后的数组

修改原数组

拓展:常用排序算法

  • 冒泡排序

    • 两两比较,大的放后面
  • 选择排序

    • 按照从左到右的顺序,依次取出每个数据,后后面所有数据做比较,找到最小值,交换
  • 快排序

    • 一分为二,分别快排序,递归进行

reverse()

当前数组按照倒装顺序将原数组颠倒

参数:无

返回值:翻转之后的数组(修改之后的原数组)

修改原数组

indexOf()

返回指定数据所在的索引,没有返回-1

参数:

1个 要查找的数据 2个 1要搜索的元素 2从第几个下标开始搜索

返回值:索引或-1

不修改原数组

lastIndexOf()

从后向前查找元素

参数:2个

要查找的元素,从什么位置开始查找

返回值:索引或-1

不修改原数组

fill()

填充

参数 :3个

要填充的值,从什么位置开始,到什么位置之前结束

返回值:填充后的数组

修改原数组

注:fill只能用于有长度的数组,如果不给与开始位置和结束位置,就会全部填充覆盖

forEach()

遍历数组,可以获取使用元素和下标,自动过滤空元素(空元素不遍历)

参数:函数,函数自带三个形参,1数据,2索引,3数组自身

返回值:无

不修改原数组

缺陷:函数中this指向将会被改变

map()

遍历数组

参数:函数,函数自带三个形参,1数据,2索引,3数组自身

不修改原数组

返回值:数组,其中的数据是:每次遍历到数组中数据时的返回值

注:新数组的长度和原数组相同

与forEach区别:有无返回值

some()

遍历数组,检测所有数据(只要有一个返回true,就是true,同时停止遍历)

参数:函数,函数自带三个形参,1数据,2索引,3数组自身

返回值:布尔值,遍历数组中数据时,只要有一个返回true,就是true,同时停止遍历

不修改原数组

every()

遍历数组,检测所有数据(必须所有返回true,才是true)

参数:函数,函数自带三个形参,1数据,2索引,3数组自身

返回值:布尔值,遍历数组中数据时,必须所有返回true,才是true,只要有一个false,就是false,停止遍历

不修改原数组

filter()

遍历数组,过滤数据

参数:函数,函数自带三个形参,1数据,2索引,3数组自身

返回值:数组,中的数据是:每次遍历到数组中数据时的返回值,为true时的值

不修改原数组

reduce()

遍历数组,归并

参数:

1.函数,这个函数自带四个形参,1上一个值,2数据,3索引,4数组自身

2.指定默认情况下的上一个值;如果没有指定上一个值,默认找数组的第一个数据

返回值:最后一个遍历的返回值

不修改原数组

XMind: ZEN - Trial Version