ECMAScript5中的关于数组的常用方法

在javascript中 ,对操作数组的常用方法push();pop();unshift();shift();join();splice();slice();join();split();concat();等,其实这些方法在ECMAScript3中已经引入,这些方法可以在一定程度上简化对数组的操作,但在ECMAScript5中也引入了一些新的方法,包括对数组的遍历,过虑,化简等操作,这些方法都提供了回调函数,可以让我们在处理数组元素时,更加灵活。
一、关于数组
我们知道,数组可以分为伪数组和真数组,伪数组也有length属性,但它不能直接使用数组的方法,但我们可以通过 slice();方法把伪数组转成真数组,例如:Array.prototype.slice.call(arguments,0);。这个是把参数数组对象转化成真数组,真数组可以使用数组直接量或new Array();方式生成。
二、ECMAScript5数组方法
1、forEach()
这个方法用来对数组进行遍历,它提供了一个回调有三个参数,回调的第一个参数就是数组元素,第二个是当前元素的索引,第三个是数组本身。例如:

var arr = [1,2,3,4,5];
arr.forEach(function(v,i,a){
    a[i]++;
});
console.log(arr)

在这里,我们对每个数组数组元素进行加一操作。最后还需要注意的是,forEach()函数无法用break关键字提前终止对数组的遍历,要想提前终止就必须在forEach()的回调中抛出一个异常,例如:

var arr = [1,2,3,4,5];
try{
    arr.forEach(function(v,i,a){
        if(i==3){
            throw Error('stopIteration');
            return ;
        }
        a[i]++;
    });
}catch(e){

}

2、map()
该方法也提供一个回调,这个回调接收每次迭代时的数组元素,并要求返回一个值 ,map()方法所产生的新数组就是由这个回调的返回值 组成 ,要注意的是,与上述的forEach()方法不同,它并不会修改原来的数组。
示例:

var arr = [1,2,3,4,5];
var newArr = arr.map(function(v){//每个数组元素加一
    return ++v;
});
console.log(newArr)

3、filter()
该方法也提供一个回调,同时也返回一个新数组,新数组的元素是根据回调中设置的条件来确定的。如果某个元素或元素索引符合这个条件,则该元素就会被放到新数组中。
示例:

var arr = [1,2,3,4,5];
var newArr = arr.filter(function(v){//筛选出偶数元素
    return v%2===0;
});
console.log(newArr)

4、some()和every()
这两个 方法均返回一个布尔值,也有一个回调,some()方法是只要数组中有一个元素符合回调中设置的条件则返回true否则返回false,而every()方法正好 相反。
示例:

var arr = [1,2,3,4,5];
var flag = arr.some(function(v){//该处返回true,因为数组中至少有两个偶数
        return v%2===0;
    });
    console.log(flag)
var arr = [1,2,3,4,5];
var flag = arr.every(function(v){//该处返回false,因为数组中并不是每个元素都是偶数
        return v%2===0;
    });
    console.log(flag)

5、reduce()和reduceRight()
这两个 方法用于对数组进行“简化”,方法的第一个参数是一个回调,第二个参数是初始值 (可选项),回调中的第一个参数是在reduce()或reduceRigth()方法中设置的初始值,后面分别是当前数组元素,数组索引,数组本身,如果没有传入初始值,则使用数组中的第一个元素作为初始值。需要注意的是,如果在一个空数组上调用该方法时,没有传入初始值,则会抛出类型错误异常;如果数组为空,但传入一个初始值或数组只有一个元素,并没有传入初始值,则仅仅是返回这个值,并不会调用那个回调函数。
示例:

var arr = [1,2,3,4,5];
var sum = arr.reduce(function(x,v){
    return x+v;
});
console.log(sum);

6、findIndex
该方法返回某个数组元素的索引,如果数组中的某个元素符合回调中设置的条件,则返回这个元素的数组索引,如果没有找到则返回-1,这个比indexOf()和lastIndexOf()方法更加灵活。
示例:

var param = 'bbb';
var index = ['aaa','bbb','ccc'].findIndex(function(v){//该处返回1
    return param === v;
});
console.log(index)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值