JavaScript的Array对象的方法(下)

一,数组的位置方法

ECMAScript5为数组实例添加了两个位置方法:indexOf()和lastIndexOf()。这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中,indexOf()方法从数组的开头(位置0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。

这两个方法都返回要查找的项在数组中的位置(即索引),如果没有找到则返回-1。

示例:

var colors = ["red","green","blue","yellow","red","black","purple","blue"];
alert(colors.indexOf("red"));//0  返回"red"在数组中第一次出现的位置  
alert(colors.indexOf("red",3));//4  从位置3开始查找即从"yellow"的位置向后查找
alert(colors.indexOf("aaa"));//-1  没有找到返回-1

alert(colors.lastIndexOf("blue"));//7 从数组的末尾开始向前查找"blue"
alert(colors.lastIndexOf("blue",5));//2 从数组的位置4开始向前查找即从"black"的位置开始查找
alert(colors.lastIndexOf("blue",1));//-1 从数组的位置1开始向前查找即从"green"的位置开始查找,没有找到返回-1
var person = {name:"javascript"};
var people = [{name:"javascript"}];
var morePeople = [person];
alert(people.indexOf(person));//-1
alert(morePeople.indexOf(person));//0

二,数组的迭代方法

ECMAScript5提供5个迭代的方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象。传入方法中的函数接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。

  • every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true;

  • filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组;

  • forEach():对数组中的每一项运行给定函数,这个方法没有返回值;

  • map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组;

  • some():对数组中的每一项运行给定函数,如果该函数对任意一项返回true,则返回true。


示例:

var numbers = [1,2,3,4,5,4,3,2,1];
//every循环numbers,判断数组numbers中的每一项是否都大于2
var everyResult = numbers.every(function(item,index,array){
return (item>2);
});
alert(everyResult);//false

//some循环numbers,判断数组numbers中项是否有大于2的项,如果有则返回true,否则返回false
var someResult = numbers.some(function(item,index,array){
return (item>2);
});
alert(someResult);//true

//filter循环numbers,判断数组numbers中大于2的项,将数组中大于2的项返回组成数组返回,如果没有则返回空数组
var filterResult = numbers.filter(function(item,index,array){
return (item>2);
});
alert(filterResult);//3,4,5,4,3

//forEach循环numbers,将数组numbers中的每一项都加1
var forEachResult = numbers.forEach(function(item,index,array){
array[index] = item+1;
});
alert(numbers);//2,3,4,5,6,5,4,3,2
//map循环numbers,将数组numbers中的每一项都乘以2,并返回计算后的数组
var mapResult = numbers.map(function(item,index,array){
return item*2;
});
alert(mapResult);//2,4,6,8,10,8,6,4,2

三,数组的缩小方法

ECMAScript5提供了两个方法:reduce()和reduceReight()方法,该方法接收两个参数:一个在每一项调用的函数和(可选的)作为缩小基础的初始值。传给reduce()和reduceRight()的函数接收四个参数:前一个值,当前值,项的索引和数组对象。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数是数组的第二项。

reduce():从数组的第一项开始向后迭代;

reduceRight():从数组的最后一项开始向前迭代。

示例:

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
    return prev+cur;
});
alert(sum);//15

var sum1 = values.reduce(function(prev,cur,index,array){
    return prev+cur;
},2);
alert(sum1);//17   相当于数组项的和加上reduce()的第二个参数

var sum2 = values.reduceRight(function(prev,cur,index,array){
    return prev+cur;
});
alert(sum2);//15

上一篇:http://my.oschina.net/shenzhenjava/blog/653707

转载于:https://my.oschina.net/shenzhenjava/blog/654030

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值