Array方法

2017-07-08  本文已影响0人  Liberty寒风

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()依次处理数组的每个成员,最终累计为一个值。从右到左(从最后一个成员到第一个成员)

两个方法的第一个参数是一个函数,该函数可接收四个参数:

  1. 累积变量,默认为数组的第一个成员
  2. 当前变量,默认为数组的第二个成员
  3. 当前位置(从0开始)
  4. 原数组

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

两个方法还可传入第二个参数,表示累积变量的初始值:

上一篇下一篇

猜你喜欢

热点阅读