zoukankan      html  css  js  c++  java
  • 还是数组 练习题 而已

    //在数组 arr 中,查找值与 item 相等的元素出现的所有位置 
    
    function findAllOccurrences(arr, target) {
        var res = [];
        for(var i=0;i<arr.length;i++){
            if(arr[i] == target){
                res.push(i)
            }
        }
        return res
    } 
    //实现一个打点计时器,要求
    //1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一//个数字,每次数字增幅为 1
    //2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
    //3、第一个数需要立即输出
    
    function count(start, end) {
        console.log(start++)
        var timer = setInterval(function(){
            if(start<=end){
                console.log(start++)
            }else{
                 clearInterval(timer)   
            }
        },100)
        return {
            cancel:function(){
                clearInterval(timer)
            }
        }
    }
    //将数组 arr 中的元素作为调用函数 fn 的参数 
    
    
    function argsAsArray(fn, arr) {
        return fn.apply(this,arr)
    }
    //将函数 fn 的执行上下文改为 obj 对象
    
    //在JavaScript中,函数是一种对象,其上下文是可以变化的,对应的,函数内//的this也是可以变化的,函数可以作为一个对象的方法,也可以同时作为另//一个对象的方法,可以通过Function对象中的call或者apply方法来修改函//数的上下文,函数中的this指针将被替换为call或者apply的第一个参数。将//函数 fn 的执行上下文改为 obj 对象,只需要将obj作为call或者apply的第//一个参数传入即可。
    
    function speak(fn, obj) {
        return fn.call(obj)
    }
    //实现函数 makeClosures,调用之后满足如下条件:
    //1、返回一个函数数组 result,长度与 arr 相同
    //2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同 
    
    
    //在《JavaScript高级程序设计》书中提到的最典型的解决此问题的方法就//是用一个立即执行的匿名函数代替闭包负值给数组,这个匿名函数有一//个参数num,因为函数参数是按值传递的所以传递给num的就是当前//for循环的值
    function makeClosures(arr, fn) {
        var result = new Array();
        for(var i=0;i<arr.length;i++){
            result[i] = function(num){
                return function(){
                    return fn(num);
                     
                }
            }(arr[i]);
        }
        return result;
    }
  • 相关阅读:
    mysql source 乱码
    php5.6.11 openssl安装
    python threading模块的Lock和RLock区别
    python多线程一些知识点梳理
    多核处理器中进程和线程是如何一起工作的?
    IO是否会一直占用CPU?(转)
    Python TypeError: __init__() got multiple values for argument 'master'(转)
    Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解(转)
    浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序(转)
    为什么有的网页右击没有出现审查元素
  • 原文地址:https://www.cnblogs.com/vali/p/7088549.html
Copyright © 2011-2022 走看看