1 sort()方法
Array.sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()时,数组元素以字母表顺序排序(如有必要将临时转化为字符串进行比较):
var a=new Array ("banana","cherry","apple");
a.sort();
var s= a.join(", ");//join()方法把字符串用" "中的符号连接起来 返回值为:s= "apple,banana,cherry"
var s=a.join("-");//返回值为 s="apple-banana-cherry"
如果数组包括undefined元素,它们会被排挤到数组的尾部。为了按照其他方式而非字母表顺序进行排序,必须给sort ()方法进行评估。假设第一个参数应该在前,比较函数应该返回一个比0小的数,反之,返回一个比0大的数。如果两个值相等的话返回0.
var a=[33,4,1111,222];
a.sort(0);//字母表排序(看第一个字母):1111,222,33,4
a.sort(function(a,b){
return a-b;});
//返回4,33,222,1111(从小到大)
如果是
a.sort(function(a,b){return b-a})//则返回1111,222,33,4(从大到小)
还有一个例子:
var a=['cnt','Bug','aat','Dog'];
a.sort();//区分大小的排序,优先排大写字母,再排小写
a.sort(function(s,t){
var a=s.toLowerCase();
var b=t.toLowerCase();
if(a<b)return -1;
if(a>b)return 1;
return 0;
})
console.log(a);
以上代码返回['aat','Bug','cnt','Dog']
现在我们对以上代码进行解释,toLowerCase()方法是可以把参数转换为小写字符串,再对他们进行有统一比较。
forEach()方法
forEach()方法从头至尾遍历数组,为每个元素调用指定的函数。
var data=[1,2,3,4,5];
var sum=0;
data.forEach(function(value){sum+=value;})
console.log(sum);
data.forEach(function(v,i,a){a[i]=v+1;})
console.log(data);
返回15
[2,3,4,5,6]
其中forEach(v,i,a)这三个参数分别表示为:数组的元素值,元素索引,数组名(数组本身)。
当只有一个参数时,那就表示数组元素。
map()方法
map()方法将调用的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。
var a=[1,2,3];
var b=[];
b=a.map(function(x){return x=x*x;});
console.log(b);
返回值为[1,4,9]
注意map()方法返回值是数组
filter()方法
该方法返回的数组元素是调用的数组的一个子集。传递的函数是用来逻辑判定的:该函数返回true或false。
调用判定函数就像forEach()和map()一样,如果返回值为true,那么传递给判定函数的元素就是这个子集的成员,它将被添加到作为一个作为返回值的数组中;
var a=[5,4,3,2,1];
var smallvalues=[];
smallvalues=a.filter(function(x){return x<3;});
console.log(smallvalues);
返回值为:[2,1]
所以filter()中如果参数满足函数则把所有满足条件的参数添加到新的数组中,返回新的数组。
every()和some()方法
这两个方法都是对数组的逻辑判定:它们对数组元素指定的函数进行判定,并返回true或false。
every()方法就像数学中的任意号
some()方法就像数学中的存在号
a=[1,2,3,4,5];
a.every(function(x){return x<10;})//返回trun:所有元素都小于10
a.some(function(x){reyturn x>3;})//返回trun:存在大于3的元素
注意这里所有和存在两者的差距
reduce()和reduceRight()
这俩呢是使用指定的函数将数组元素进行组合,生成单个值。
var a =[1,2,3,4,5];
var sum=a.reduce(function(x,y){return x+y;},0);
var max=a.reduce(function(x,y){return (x>y)?x:y; });
console.log(sum,max);
//返回值为15 5
我们可以看到reduce中有两个参数,第一个参数是一个函数,第二个参数是一个数值代表传入函数的初始值。
其中第一次传入初始值后,会改变这个量。这样说有点懵逼。看下面的解释:
比如上面给出的者第一个例子:
第二个参数是0,代表函数的初始值x=0,进行0+1=1后返回给新的初始值变为1,然后继续X=1,1+2=3,再将当做新的初始值进行运算,x=3,3+3=6,以此类推,x=6,6+4=10,x=1,10+5=15。最后返回最后的值15。
注意第二个参数是可选的。
没有第二个参数,则直接运行函数与数组中的元素就可以了。
ruduceRight()的工作原理和reduce()一样,不过它是从数组的右边进行处理数组元素的。
网友评论