sort()
sort()
对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变。
如果想让sort方法按照自定义方式排序,可以传入一个函数作为参数,表示按照自定义方法进行排序。该函数本身又接受两个参数,表示进行比较的两个元素。
var arr = ['1','4','5','2'];
var newArr = arr.sort(function(a, b) {
return b - a;
});
console.log(newArr); // ["5", "4", "2", "1"]
var newArr = arr.sort(function(a, b) {
return a - b;
});
console.log(newArr); // ["1", "2", "4", "5"]
var newArr = arr.sort(function(a, b) {//数组打乱
return 0.5 - Math.random();
});
console.log(newArr); // ["1", "2", "4", "5"]
map()
map()
对数组的所有成员依次调用一个函数,根据函数返回结果返回一个新数组。
接受一个函数作为参数。该函数调用时,map方法会将其传入三个参数,分别是当前成员、当前位置和数组本身
var arr = [1,2,3];
var newArr = arr.map(function(v){
return v - 1;
});
console.log(newArr); // [0, 1, 2]
filter()
filter()
参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。
filter方法的参数函数可以接受三个参数,第一个参数是当前数组成员的值,这是必需的,后两个参数是可选的,分别是当前数组成员的位置和整个数组。
var arr = [1,2,3];
var newArr = arr.filter(function(v){
return (v > 2);
});
console.log(newArr); // [3];
some()、every()
some()
用来判断数组成员是否符合某种条件。接受一个函数作为参数,所有数组成员依次执行该函数,返回一个布尔值。该函数可以根据返回值提前终止循环,跳出函数。
reduce()、reduceRight()
reduce()
依次处理数组的每个成员,最终累计为一个值。从左到右处理(从第一个成员到最后一个成员)
reduceRight()
依次处理数组的每个成员,最终累计为一个值。从右到左(从最后一个成员到第一个成员)
两个方法的第一个参数是一个函数,该函数可接收四个参数:
- 累积变量,默认为数组的第一个成员
- 当前变量,默认为数组的第二个成员
- 当前位置(从0开始)
- 原数组
对reduce()
:
var arr = [1, 2, 3, 4, 5];
var total = arr.reduce(function(x, y){
console.log(x, y)
return x + y;
});
console.log(total);
// 1 2
// 3 3
// 6 4
// 10 5
//最后结果:15
对reduceRight()
:
var arr = [1, 2, 3, 4, 5];
var total = arr.reduceRight(function(x, y){
console.log(x, y)
return x + y;
});
console.log(total);
// 5 4
// 9 3
// 12 2
// 14 1
// 15
两个方法还可传入第二个参数,表示累积变量的初始值:
网友评论