习题
展开
联合使用reduce
方法和concat
方法,将一个数组的数组“展开”成一个单个数组,包含原始数组的所有元素。
let arrays = [[1, 2, 3], [4, 5], [6]];
// Your code here.
// → [1, 2, 3, 4, 5, 6]
你自己的循环
编写一个高阶函数loop
,提供类似for
循环语句的东西。 它接受一个值,一个测试函数,一个更新函数和一个主体函数。 每次迭代中,它首先在当前循环值上运行测试函数,并在返回false
时停止。 然后它调用主体函数,向其提供当前值。 最后,它调用update
函数来创建一个新的值,并从头开始。
定义函数时,可以使用常规循环来执行实际循环。
// Your code here.
loop(3, n => n > 0, n => n - 1, console.log);
// → 3
// → 2
// → 1
every
类似于some
方法,数组也有every
方法。 当给定函数对数组中的每个元素返回true
时,此函数返回true
。 在某种程度上,some
是作用于数组的||
运算符的一个版本,every
就像&&
运算符。
将every
实现为一个函数,接受一个数组和一个谓词函数作为参数。编写两个版本,一个使用循环,另一个使用some
方法。
function every(array, test) {
// Your code here.
}
console.log(every([1, 3, 5], n => n < 10));
// → true
console.log(every([2, 4, 16], n => n < 10));
// → false
console.log(every([], n => n < 10));
// → true