习题

展开

联合使用reduce方法和concat方法,将一个数组的数组“展开”成一个单个数组,包含原始数组的所有元素。

  1. let arrays = [[1, 2, 3], [4, 5], [6]];
  2. // Your code here.
  3. // → [1, 2, 3, 4, 5, 6]

你自己的循环

编写一个高阶函数loop,提供类似for循环语句的东西。 它接受一个值,一个测试函数,一个更新函数和一个主体函数。 每次迭代中,它首先在当前循环值上运行测试函数,并在返回false时停止。 然后它调用主体函数,向其提供当前值。 最后,它调用update函数来创建一个新的值,并从头开始。

定义函数时,可以使用常规循环来执行实际循环。

  1. // Your code here.
  2. loop(3, n => n > 0, n => n - 1, console.log);
  3. // → 3
  4. // → 2
  5. // → 1

every

类似于some方法,数组也有every方法。 当给定函数对数组中的每个元素返回true时,此函数返回true。 在某种程度上,some是作用于数组的||运算符的一个版本,every就像&&运算符。

every实现为一个函数,接受一个数组和一个谓词函数作为参数。编写两个版本,一个使用循环,另一个使用some方法。

  1. function every(array, test) {
  2. // Your code here.
  3. }
  4. console.log(every([1, 3, 5], n => n < 10));
  5. // → true
  6. console.log(every([2, 4, 16], n => n < 10));
  7. // → false
  8. console.log(every([], n => n < 10));
  9. // → true