实现Promise.all方法
Promise.myAll = function(promises) {
var index = 0;
var result = [];
return new Promise(function(resolve, reject){
for (var i in promises) {
promises[i]
.then(function(res){
result.push(res);
if (++index === promises.length) {
resolve(result);
}
})
.catch(function(err){
reject(err);
});
}
});
};
const p1 = Promise.resolve('我是第一个');
const p2 = Promise.resolve('我是第二个');
const p3 = Promise.resolve('我是第三个');
Promise.myAll([p1, p2, p3]).then(res =>{
console.log(res);
});
实现斐波那契数列
方法1
function fun(n){
if(n<=2){
return 1
}else{
let oldNum = 1
let curNum = 1
let midNum = 0
for(let i = 3;i<=n;i++){
midNum = oldNum
oldNum = curNum
curNum += midNum
}
return curNum
}
}
console.log(fun(6));
此方法时间复杂度:O(n) 空间复杂度:O(4)
方法2
function fun(n) {
if (n <= 2) {
return 1
};
return fun(n - 2) + fun(n - 1);
}
console.log(fun(6));
此方法时间复杂度:O(2^n) 空间复杂度:O(n)