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);
    
    学无止境,谦卑而行.
  • 相关阅读:
    无U盘安装Linux openSUSE(通过硬盘安装Linux)
    【汇编语言】DEBUG的使用
    【汇编语言】新手第一步——HelloWorld & A+B
    Java开发中的23种设计模式详解(转)
    python安装PIL包的方法
    python正则表达式匹配十六进制数据
    mysql安装的坑
    pdfplumber解析PDF报错:ValueError: not enough values to unpack (expected 2, got 1)
    pdfplumber解析票据PDF文档,部分中文字体返回CID,无法解析
    CAN总线字节序
  • 原文地址:https://www.cnblogs.com/wangyang0210/p/15257278.html
Copyright © 2011-2022 走看看