算法题
数组乱序
实现一个数组乱序,每一个元素出现在每一个位置的概率是平均的
function noSort(arr) { const len = arr.length for (let i = 0; i < len; i++) { const random = Math.random() * (len - i) arr.push(arr.splice(random, 1)) } return arr } const arr = [1, 2, 3, 4, 5] console.log(noSort(arr))
补全所需函数
把下面代码中的add one two函数补全,其中加法运算必须在add函数里
function add() { } function one() { } function two() { } console.log(one(add(two()))) // 3 console.log(two(add(one()))) // 3
补全后代码
function add(num) { return function () { return this.value + num } } function one(fun) { let obj = { value: 1 } if (fun) { return fun.apply(obj) } else { return obj.value } } function two(fun) { let obj = { value: 2 } if (fun) { return fun.apply(obj) } else { return obj.value } } console.log(one(add(two()))) //3 console.log(two(add(one()))) //3