ECMA5新增数组使用方法
indexOf(item, start); 【注】O要大写。
- 功能:从数组的start这个位置开始,查找item第一次在数组中出现的位置。
- 格式:数组.indexOF(item, start);
- 参数:(item)传的是查询的数据。(start)传的是查询开始的位置,可以不写,默认从下标为0开始查找。
- 返回值:如果查找到,返回出现的位置。如果没有查到,返回—1.
var arr = [10, 20, 30, 40, 50, 40, 30, 20, 10];
//要查询20出现的第一次位置,start可以不传参数。出现的位置为1.
alert(arr.indexOf(20));
//但是当数组中出现多个相同参数的时候,以上述arr数组为例,
//我们要查询第7位上的20,就必须给start传入参数,开始位置要越过第一次出现的位置。
alert(arr.indexOf(20, 2));//其中start上的参数2是从下标位2的参数开始查找
//当我们查找一个数组中不存在的数据时,例如查询200.
alert(arr.indexOf(200));//这时候返回-1,查询不到数据。
forEach循环 【注】E要大写。
forEach在使用的过程中与for循环,for…in功能相同,都是给数组进行遍历。
var arr = [10, 20, 30, 40, 50];
arr.forEach(function(item, index, arr){
/*
参数:
item:当前遍历的元素。
index:当前元素的下标。
arr:数组本身
*/
document.write(item + "," + index "," + arr +</br>);
//输出的结果为:
10(当前遍历的元素),0(元素下标),10, 20, 30, 40, 50(数组本身)
20(当前遍历的元素),1(元素下标),10, 20, 30, 40, 50(数组本身)
30(当前遍历的元素),2(元素下标),10, 20, 30, 40, 50(数组本身)
40(当前遍历的元素),3(元素下标),10, 20, 30, 40, 50(数组本身)
50(当前遍历的元素),4(元素下标),10, 20, 30, 40, 50(数组本身)
})
map()映射
map会便利当前数组,然后调用参数中的方法,返回当前方法的返回值。
var arr = [10, 20, 30, 40, 50];
//map不会改变原有数组,而是将函数执行一次之后的返回值组成一个数组,返回回来。
var newArr = arr.map(function(item, index, arr){
/*
参数:
item:当前遍历的元素。
index:当前元素的下标。
arr:数组本身
*/
//return的表达式,映射数组中对应下标的值
return item * 10;
})
consloe.log(newArr);
//输出的newArr数组为[100, 200, 300, 400, 500],在原有数组基础上生成一个新数组,且是原数组的10倍。
filter()过滤
就是将不符合条件的元素过滤掉。
var arr = [10, 20, 30, 40, 50];
var newArr = arr.filter(function(item, index, arr){
/*
参数:
item:当前遍历的元素。
index:当前元素的下标。
arr:数组本身
*/
//return是筛选条件。
return item > 20;
})
alert(newArr);
//结果为:
[30, 40, 50]
some()
判断数组中是否有复合条件的元素。
var arr = [10, 20, 30, 40, 50];
var res = arr.some(function(item, index, arr){
/*
参数:
item:当前遍历的元素。
index:当前元素的下标。
arr:数组本身
*/
//return判断条件的表达式
return item == 30;
})
alert(res);//为true;
//这里要注意some为短路操作,只要找到复合条件的元素,后续就都不执行。
every()
跟some一样,但是要求每一项都复合,才返回true有一项不合格就返回false。
reduce()归并
var arr = [10, 20, 30, 40, 50];
var res = arr.reduce(function(prev, next, index,arr){
/*
参数:
prve:上一次计算return表达式的值,如果是第一次,是下标为零的元素。
next:从下表1开始,遍历到当前的元素。
index:遍历到next元素的下标。
arr:当前数组本身。
*/
alert(prev + "," + next + "," +index);//[10, 20, 1]
return prev + next;
})
alert(res);