ES5常用的数组方法总结

本文总结了ES5中数组的9个常用方法,包括forEach用于灵活遍历数组,map用于创建新数组而不改变原数组,filter用于过滤不符合条件的元素,some和every分别用于判断数组内是否存在指定元素,reduce和reduceRight进行数组值的累加或其他计算,以及indexOf和lastIndexOf用于查找数组中元素的位置。

ES5一共有21个数组的方法:

在这里插入图片描述

ECMAScript 5中对Array中新增了9个常用的方法:

  • 5个迭代方法(循环操作数组中的各个项):forEach(),map(),filter(),every()some()
  • 2个归并方法(迭代数组所有项,最终返回一个值):reduce()reduceRight()
  • 2个索引方法:indexOf()lastIndexOf()

一、forEach()方法

跟之前的for()循环一样,只是forEach更灵活
遍历当前数组,参数为一个回调函数,回调有三个值:

1.e当前元素,
2. index当前元素索引值,
3. array整个数组;

.forEach(function(e,index,arr){});

var arr = [1,2,3,4,5,6]

arr.forEach(function(e,index,array){ 
   array[index]= e + 1
})

console.log(arr); //[2, 3, 4, 5, 6, 7]

二、map()方法

map()方法返回一个被操作后的新数组,不会改变原数组
新数组的元素值是每次函数return的返回值;
若不写return,接收的新数组的元素值将全为空;

var a = [1,2,3];
var b = a.map(function(x){
return x*x; //b得值是[1,4,9]
});

三、 filter()方法

过滤,过滤不符合条件的元素,如果回调函数返回true则保留,返回false则过滤掉
原数组不受影响;
通俗点说就是过滤器,过滤满足条件的数组的元素。

var arr = [20,13,11,8,0,11];
var brr =arr.filter(function(item)){
	//返回值为奇数的元素
	return item%2;
}

四、some()方法

判断数组内是否有指定元素,如果只要有一个则返回true,如果一个都没有则返回false
原数组不受影响;

var arr = [20,13,11,8,0,11];
var brr = arr.some(function(item){
	return item>10;
})
alert(brr); //true

五、every()方法

判断数组内是否都有指定元素,如果全部都有则返回true
如果有一个没有指定元素则返回false
原数组不受影响;

some()every()相对;
some()是数组内只要有一个满足条件则返回true,一个都没有返回false
every()是数组内全部满足条件则返回true,否则返回flase

var arr = [20,13,11,8,0,11];
var brr = arr.every(function(item){
	return item>10;
})
alert(brr); //false

六、reduce()方法

reduce()回调函数有四个参数:

  • 第一个参数为:之前计算过的值,
  • 第二个参数为:之前计算过的值的下一个值
  • 第三个参数:当前索引
  • 第四个参数为:当前数组对象

类似递归,可以求和之类的操作

let arr = [1,2,3];
let result = arr.reduce(function(prev, next, index, arr){
	return prev + next;
})
console.log(result)		// 6

七、reduceRight()

reduceRight()reduce()类似,只是执行方向不同,
reduceRight()从数组的末尾往前递归
reduce()从数组的开头往后递归

八、indexOf()

跟字符串查找一样,查找指定元素是否存在,如果存在,返回下标,如果不存在返回-1

var a = ['Prosper', 'Lee', 'is', 'very', 'nice', '!!!']
console.log(a.indexOf("Pro")); // -1;
console.log(a.indexOf("is")); // 2

九、lastIndexOf()

indexOf()一样,只是查找起始点不同,indexOf是从第一个开始查找,

lastIndexOf()是从最后一个查找,如果存在,返回下标,如果不存在返回-1

var data = [2, 5, 7, 3, 5];

alert(data.lastIndexOf(5)); // 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值