// 重复、反复、条件迭代
// 实现一个repeat函数
const _ = require('../lib/underScore.js')
function repeat(times, VALUE) {
return _.range(times).map(() => VALUE)
}
let r = repeat(4, 'js')
console.log('r', r) // [ 'js', 'js', 'js', 'js' ]
// times是确定的值
function repeatedly(times, fun) {
return _.range(times).map(fun)
}
r = repeatedly(3, function(){
return Math.floor((Math.random() * 10) + 1)
})
console.log(r) // [ 10, 7, 8 ]
// 条件开放,执行开放
// 将for循环的两个语句使用函数表示
function iterateUntil(fun, check, init) {
let ret = []
// let result = fun(init)
// while(check(result)) {
// ret.push(result)
// result = fun(result)
// }
for(let i = fun(init); check(i); i = fun(i)) {
ret.push(i)
}
return ret
}
let b = iterateUntil(n => n + n, n => n < 1024, 1)
console.log(b) // [ 2, 4, 8, 16, 32, 64, 128, 256, 512 ]
let n = iterateUntil(n => ++n, n => n < 10, 0)
console.log(n)
// 但这样的话,想实现上面的 Math.floor((Math.random() * 10) + 1) 生成反而变得困难,因为这样的话需要在fun中返回一个迭代数和一个结果值
js-读书笔记-函数式编程-重复、反复、条件迭代-repeat函数的实现
最新推荐文章于 2024-03-26 10:43:53 发布