JavaScript中关于数组方法的总结

一. 栈方法

push( )pop( )
这两个方法作用在数组的尾部
push( ) 是在数组的末尾推入(push)任意个项 返回值是修改后的数组长度 属于添加操作
pop( ) 是在移除数组的最后一项 返回值为被移除的项 属于删除操作

二. 队列方法

shift( )unshift( )
这两个方法作用于数组的头部
shift( ) 移除数组的第一项并返回该项 返回值类似于pop( ) 属于删除操作
unshift( ) 在数组头部添加任意个项并返回数组长度 返回值类似于push( ) 属于添加操作

三. 重排序方法

reverse( )sort( )
reverse( ) 可以直接将数组翻转 如[1,2,5] 翻转为 [5,2,1]
sort() 很有意思,默认情况下sort会按照升序排列数组,但其比较方式是将每一项转化为字符串比较(调用每一项的 toString( )) 所以会出现有趣的现象

var array = [1,5,7,15,8,20];
array.sort();
console.log(array);   //[1,15,20,5,7,8]

这是因为字符串的比较是比较第一位的ASCII码值 所以会出现意料之外的情况 显然单纯使用sort()是无法满足需求的,为了解决这一问题 sort( ) 可以接收一函数作为比较条件,如果第一个参数应在第二个参数之后,则返回一个负值,如果第一个参数应在第二个参数之前,则返回一个负值,两参数相等,则返回0,如下所示:

var a = function(value1,value2) {
      return value1-value2
      }
var array = [1,5,7,15,8,20];
array.sort(a);
console.log(array);  //[1,5,7,8,15,20]

四. 操作方法

concat( ) slice( )splice( )
concat( ) 基于当前数组中所有项创建一个新数组 如果有参数(一个或多个数组/一个或多个值),会将参数添加到数组末尾去.

var colors = ['red','green','blue'];
var colors2 = colors.concat('yellow',['black','brown']);
console.log(colors);  //['red','green','blue']
console.log(colors2);  //['red','green','blue','yellow','black','brown']

slice( ) 基于当前数组中某些项创建一个新数组 接收一个或两个参数
一个参数表示返回该数组从参数指定位置到末尾组成的新数组
两个参数表示返回该数组从参数1指定位置到参数2指定位置(不包含参数2位置)组成的新数组 含头不含尾

特别注意: concat( ) slice( ) 两个方法并不会对原始数组造成修改 其他方法未作说明均对原数组有修改

splice( ) 这个方法最少要两个参数 最为全面 可以完成 删除 插入 替换 其返回值为被删除的项(无删除则为空数组)
第一个参数:指定起始位置
第二个参数:删除个数
后面的参数: 需要添加的项

var colors = ['red','green','blue'];
var removed = colors.splice(0,1) 
//上一行为删除操作 removed=['red'] colors=['green','blue']
removed = colors.splice(1,0,'yellow','orange') 
//上一行为插入操作 removed=[] colors=['green','yellow','orange','blue']
removed = colors.splice(1,1,'red','purple') 
//上一行为将一个替换为两个操作 removed=['yellow'] 
// colors=['green','red','purple','orange','blue']

五. 位置方法

indexOf( )lastIndexOf( )
可以接收一个或两个参数 第一个参数表示要查找的项 第二参数表示从哪开始(可选)
**indexOf( )**从头到尾开始查找 **lastIndexOf( )**从尾到头开始查找 一旦找到直接返回对应项的位置
若没找到 返回值为-1

六. 迭代方法

迭代方法有五个 every( )/filter( )/forEach( )/map( )/some( )
他们均接收一个函数作为参数 函数中又会有三个参数 例如 every(function(item,index,array){ })
item表示当前循环的项的值
index表示当前循环的项的序号
array表示当前被循环的数组

every 函数对每一项都返回true 则返回true 即每一个
filter 将函数返回值为true的项的值从新组成一个数组作为返回值 即筛选器
forEach 类似于for循环遍历数组 无返回值
map 返回一个由函数返回值构成的新数组
some 函数对任意一项都返回true 则返回true 即有(存在)

七. 归并方法

reduce( ) 和 reduceRight( )
归并方法非常适合数组的和 参数为一个函数 该函数有四个参数
reduce( ) 是从头到尾归并 reduceRight( )是从尾到头归并

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
	return prev + cur;
})
cosole.log(sum) //15

原理如下 第一次循环 prev为1 cur为2
第二次 prev为3(即接收前一次循环return值为prev) cur为3 直到把数组所有项执行完

好累 终于写完了! 打下来开始背背背!奥利给!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值