ECMA5新增数组使用方法

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值