Settimeout与Setinterval

实现一个打点计时器:(从start到end每隔100毫秒console.log一个数字,增幅为1,返回对象包涵一个cancel方法用于定时操作,第一个需立即输出)

function count (start,end)                   function count(start, end) 
{                                           {
 console.log(start);                           if(start<=end){
var a = setInterval(function (){                console.log(start);
if(start<end){                                      start++;
start+=1;                                       var t= setTimeout( function (){
 console.log(start);}                              count(start,end)                
},100)                                             },100)}    
return { cancel:function()                           return {  cancel:function ()  
{                                                  {
clearInterval(a);                                     clearTimeout(t); 
}                                                   }                                                 
}                                                   }
}                                                   }

实现函数 makeClosures,调用之后满足如下:1、返回一个函数数组 result,长度与 arr 相同  2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同。

第一种:
function makeClosures(arr, fn) {
  var result = [];
     arr.forEach(function(e){
         result.push(function(num){
           return function(){  //如果在循环中直接写result[i] = function(){return fn(arr[i]);}
              return fn(num);  //或者result.push(function(){return fn(arr[i]);}),那样出错
             };                //只是创建了一个函数体为“return fn(arr[i]);”的函数对象而已
         }(e));                //需要声明一个匿名函数,并立即执行它。函数执行后,                      
     });                    //i立即传入并被内部函数访问到,闭包允许你引用存在于外部函数中的变量。
     return result;
 }
第二种:
function makeClosures(arr, fn) {
    return arr.map(function(item){
       return fn.bind(this,item);
    });
}

[编程题]二进制转换:获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1

    例子:        输入:128,8            输出:1

第一种:
function valueAtBit(num, bit) {
  var s = num.toString(2);
     return s[s.length - bit];
 }
第二种:
function valueAtBit(num, bit) {
    //toString转化为二进制,split将二进制转化为数组,reverse()将数组颠倒顺序
    var arr = num.toString(2).split("").reverse();
    return arr[bit-1];
}

给定二进制字符串,将其换算成对应的十进制数字 

输入:'11000000'             输出:192

function base10(str) {
    /**
        parseInt(str,2)
        parseInt(str,8)
        parseInt(str,16)
    */
    return parseInt(str,2);
}
查找重复元素:输入:[1, 2, 4, 4, 3, 3, 1, 5, 3] ; 输出:[1, 3,4]
function duplicates(arr) {
    var a=arr.sort(),b=[];
    for(var i in a){
        if(a[i]==a[i-1] && b.indexOf(a[i])==-1) b.push(a[i]); 
    }
    return b;
}//先排序,如果后一个与前一个相等且未保存,则保存。
给定字符串 str,检查其是否包含 连续3个数字 。输入:'9876543';输出:"987"
1、如果包含,返回最新出现的 3 个数字的字符串
2、如果不包含,返回 false

 

 

 
 
 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值