ECMAscript5 新增数组内函数
indexOf()
格式:数组.indexOf(item, start)
功能:从start这个下标开始,查找item在数组中的第一次出现的下标。
参数:item 我们要去查找的元素
start从哪个下标开始去查找,如果不传,默认从0开始查找
返回值: -1 没有找到
>=0 查到到的下标
var arr = ["蝙蝠侠", "超人", "闪电侠", "绿灯侠", "神奇女侠", "绿灯侠"]; var res = arr.indexOf("绿灯侠", 4); alert(res);// 5 var arr = ["蝙蝠侠", "超人", "闪电侠", "绿灯侠", "神奇女侠", "绿灯侠"]; var res = indexOf(arr, "绿灯sss侠"); alert(res);// -1 未找到
//自定义的(自己封装函数)indexOf
function indexOf(arr, item, start){ var index = -1;//假设找不到 if(!start){ start = 0; } for(var i = start; i < arr.length; i++){ if(arr[i] === item){ index = i; break; } } return index; }
. forEach(function(item, index, arr ){ })
forEach()
格式:数组.forEach(function(item, index, arr){
item 当前遍历的到元素
index 当前遍历到的元素下标
arr 当前数组本身
})
功能:用来遍历数组。
for循环
for...in
forEach
var arr = ["蝙蝠侠", "超人", "闪电侠", "绿灯侠", "神奇女侠", "绿灯侠"]; arr.forEach(function(item, index, arr){ alert(item + ", " + index); })
效果:
传统方式
for(var i = 0; i < arr.length; i++){ alert(arr[i]); }
map() 遍历
var arr = [10, 20, 30, 40, 50]; var newArr = arr.map(function(item, index, arr){ return item * 1.3; //newArr对应下标的结果 }) alert(arr);//10, 20, 30, 40, 50 alert(newArr);//13,26, 39, 52, 65
filter() 过滤
var arr = [10, 20, 30, 40, 50]; var newArr = arr.filter(function(item, index, arr){ //找出原数组中大于20的所有元素,生成一个新数组 return item > 20; //过滤条件 }); alert(arr);//10, 20, 30, 40, 50 alert(newArr);//30, 40, 50
/*
some() 某些
判断是否有符合条件的元素存在。
【注】只要找到第一个符合条件的元素,就直接退出循环。
返回值: true false
var arr = [10, 20, 30, 40, 50]; var res = arr.some(function(item, index, arr){ // alert(item + ", " + index); //判断的条件。 return item > 20; }) alert(res);//30, 40, 50
every()
判断所有元素是否都符合条件。
【注】找到第一个不符合条件的元素,就终止循环,返回false
返回值:true false
var arr = [10, 20, 30, 40, 50]; var res = arr.every(function(item, index, arr){ alert(item + ", " + index); //判断的条件。 return item < 40; }) alert(res);// false
将上述代码中的判断条件修改为:
return item > 5;
结果就为真:
alert(res);// true
reduce() 归并
语法:数组.reduce(function(prev, next, index, arr){ })
prev 上一次循环 return后面表达式的结果
next 这一次遍历的元素
index 这一次遍历的元素的下标
var arr = [10, 20, 30, 40, 50]; var res = arr.reduce(function(prev, next, index, arr){ /* prev 上一次循环 return后面表达式的结果 next 这一次遍历的元素 index 这一次遍历的元素的下标 */ alert(prev + ", " + next); return prev + next; }) alert(res);//150 通过此种方法实现了求数组元素的总和