zoukankan      html  css  js  c++  java
  • JavaScript——实现一些常用函数

    前言

    如题,实现一些常用的函数,一个小练习;

    内容

    forEach

    /**
     * foreach
     * @param {*} array 
     * @param {*} fn 
     */
    function forEach(array, fn) {
        for (let index = 0; index < array.length; index++) {
           fn(array[index]) 
        }
    }
    
    // test
    let array = [1,2,3,4,5]
    
    forEach(array, function name(params) {
        console.log(params);
    })
    
    

    fliter

    /**
     * fliter
     * @param {*} array 
     * @param {*} fn 
     * @returns 
     */
    function fliter (array, fn) {
        let res = []
        for (let index = 0; index < array.length; index++) {
           if (fn(array[index])) {
               res.push(array[index])
           }
        }
        return res
    }
    
    // test
    let arr = [1,2,3,4,5]
    let r = fliter(arr, function name(params) {
        return params % 2 === 0
    })
    console.log(r);
    

    makeFun

    /**
     * makeFun
     * @param {*} params 
     * @returns 
     */
    function makeFn(params) {
        let msg = "hello fn"
        return function name(params) {
            console.log(msg);
        }
    }
    
    // test
    const fn = makeFn()
    fn()
    
    makeFn()()
    

    once

    /**
     * once
     * @param {*} fn 
     * @returns 
     */
    function once(fn) {
        let done = false
        return function name(params) {
            if (!done) {
                done = true
               return fn.apply(this, arguments)
            }
        }
    }
    
    // test
    let pay = once(function (money) {
        console.log(`支付: ${money}`);
    })
    
    pay(5)
    pay(4)
    pay(3)
    

    map

    /**
     * map
     * @param {*} array 
     * @param {*} fn 
     * @returns 
     */
    const map = (array, fn) => {
        let res = []
        for (const value of array) {
            res.push(fn(value))
        }
        return res
    }
    
    // test
    let arr = [1,2,3,4]
    arr = map(arr, v => v * v )
    console.log(arr);
    

    onece

    /**
     * every
     * @param {*} array 
     * @param {*} fn 
     * @returns 
     */
    const every = (array, fn) => {
        let res = []
        for (const value of array) {
            res = fn(value)
            if (!res) {
                break
            }
        }
        return res
    }
    
    // test
    let arr = [11,12,16, 1]
    let r = every(arr, v => v > 10)
    console.log(r);
    

    some

    /**
     * some
     * @param {*} array 
     * @param {*} fn 
     * @returns 
     */
    const some = (array, fn) => {
        let res = false
        for (const value of array) {
            res = fn(value)
            if (res) {
                break
            }
        }
        return res
    }
    
    let arr = [1, 2, 3, 4]
    let r = some(arr, v => v % 2 === 0)
    console.log(r);
    
    学无止境,谦卑而行.
  • 相关阅读:
    第10组 Alpha冲刺(4/4)
    python2中的新式类与经典类区别
    http请求Content-Type有几种
    2020 年软件设计师考试大纲
    11-Elasticsearch之-组合查询
    16-扩展阅读-摘录
    各种排序算法
    Vmware虚拟机三种网络模式详解(转载)
    无法访问 CentOS7服务器上应用监听的端口
    VsCode 常用插件清单
  • 原文地址:https://www.cnblogs.com/wangyang0210/p/15257278.html
Copyright © 2011-2022 走看看