不生成新数组的迭代器方法-forEach每个元素都操作-every所有都满足-some有一个满足-reduce累计操作

原创 1130331201 随笔 JS算法 138阅读 2018-01-31 16:13:55 举报

/**

    1. 数组.forEach(func) 对数组每个元素执行某操作
  • 它接受一个函数作为参数,对数组中的每个元素使用该函数
  • /
    function squareFunc(num) {
    print(num, num
    num); //打印多个字符的时候自动中间会加空格
    }

var nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
nums.forEach(squareFunc);

/**

    1. 数组.every(func), 检查数组中每个元素是否满足某条件
  • 它接受一个返回值为布尔类型的函数, 对数组中的每个元素使用该函数。
  • 如果对于所有的元素,该函数均返回 true, 则该方法返回 true
  • 数组.some(func)
  • 是否存在一个元素满足
  • 也接受一个返回值为布尔类型的函数, 只要有一个元素使得该函数返回 true,
  • 该方法就返回 true
  • */
    function isEven(num) {
    return num % 2 == 0;
    }
    var nums = [2, 4, 6, 8, 10];
    var even = nums.every(isEven);
    if (even) {
    print("all numbers are even");
    } else {
    print("not all numbers are even");
    }

/**

  • 3.
  • reduce() 数组中的各个元素累计进行操作
  • 它接受一个函数, 返回一个值。 该方法会从一个累加值开始, 不断对累加值和
  • 数组中的后续元素调用该函数, 直到数组中的最后一个元素, 最后返回得到的累加值。
  • */

//使用 reduce() 方法为数组中的元素求和:
function add(runningTotal, currentValue) {
return runningTotal + currentValue;
}
var nums = [1,2,3,4,5,6,7,8,9,10];
var sum = nums.reduce(add); //
print(sum); // 显示 55

//reduce() 方法也可以用来将数组中的元素连接成一个长的字符串
function concat(accumulatedString, item) {
return accumulatedString + item;
}
var words = ["the ", "quick ","brown ", "fox "];
var sentence = words.reduce(concat);
print(sentence); // 显示 "the quick brown fox"

/**

  • 4.reduceRight() 方法,从右到左执行。
  • 下面的程序使用 reduceRight() 方法将数组中的元素进行翻转:
  • */
    function concat(accumulatedString, item) {
    return accumulatedString + item;
    }
    var words = ["the ", "quick ","brown ", "fox "];
    var sentence = words.reduceRight(concat);
    print(sentence); // 显示 "fox brown quick the"
评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复