首页 > 编程语言 >JavaScript 数组方法重写

JavaScript 数组方法重写

时间:2023-12-21 17:37:05浏览次数:40  
标签:function return JavaScript list let 数组 prototype 重写 fn

const list = [1, 2, 3]

Array.prototype.myForeach = function (fn) {
    for (let i = 0; i < this.length; i++) {
        fn(this[i], i, this)
    }
}

Array.prototype.myMap = function (fn) {
    const _list = []
    for (let i = 0; i < this.length; i++) {
        _list.push(fn(this[i], i, this))
    }
    return _list
}

Array.prototype.myFilter = function (fn) {
    const _list = []
    for (let i = 0; i < this.length; i++) {
        !!fn(this[i], i, this) && _list.push(this[i])
    }
    return _list
}

Array.prototype.mySome = function (fn) {
    const _list = []
    for (let i = 0; i < this.length; i++) {
        if (!!fn(this[i], i, this)) {
            return true
        }
    }
    return false
}

Array.prototype.myFind = function (fn) {
    const _list = []
    for (let i = 0; i < this.length; i++) {
        if (!!fn(this[i], i, this)) {
            return this[i]
        }
    }
}

Array.prototype.myFindIndex = function (fn) {
    const _list = []
    for (let i = 0; i < this.length; i++) {
        if (!!fn(this[i], i, this)) {
            return i
        }
        return -1
    }
}

Array.prototype.myReverse = function (fn) {
    const _list = []
    for (let i = this.length - 1; i >= 0; i--) {
        _list.push(this[i])
    }
    return _list
}

Array.prototype.myReduce = function (fn, num) {
    let _num = num
    for (let i = 0; i < this.length; i++) {
        _num = fn(_num, this[i], i, this)
    }
    return _num
}

标签:function,return,JavaScript,list,let,数组,prototype,重写,fn
From: https://www.cnblogs.com/landuo629/p/17919698.html

相关文章

  • 无涯教程-Go - 多维数组函数
    Go编程语言允许多维数组,这是多维数组声明的一般形式-varvariable_name[SIZE1][SIZE2]...[SIZEN]variable_type如,以下声明创建了三维5、10、4个整数数组-varthreedim[5][10][4]int二维数组二维数组是多维数组的最简单形式,本质上,二维数组是一维数组的列表,要声明大小为[x......
  • Java文件与byte数组
    读取Java文件到byte数组的三种方式一、FileUtils.javaimportjava.io.BufferedInputStream;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.RandomA......
  • class071 子数组最大累加和问题与扩展-下【算法】
    class071子数组最大累加和问题与扩展-下【算法】code1152.乘积最大子数组//乘积最大子数组//给你一个整数数组nums//请你找出数组中乘积最大的非空连续子数组//并返回该子数组所对应的乘积//测试链接:https://leetcode.cn/problems/maximum-product-subarray/因为有......
  • class070 子数组最大累加和问题与扩展-上【算法】
    class070子数组最大累加和问题与扩展-上【算法】code153.最大子数组和//累加和最大子数组和//给你一个整数数组nums//请你找出一个具有最大累加和的非空子数组//返回其最大累加和//测试链接:https://leetcode.cn/problems/maximum-subarray/dp[i]:以i结尾的子数组[…......
  • [LeetCode] LeetCode852. 山脉数组的顶峰索引
    题目描述思路:用二分进行排除不满足条件的元素,最后剩下的元素即为答案往常我们使用「二分」进行查值,需要确保序列本身满足「二段性」:当选定一个端点(基准值)后,结合「一段满足&另一段不满足」的特性来实现“折半”的查找效果。但本题求的是峰顶索引值,如果我们选定数组头部或者尾......
  • 全球知名的五款JavaScript混淆加密工具详解
    ​现在市场上有很多好用的混淆加密工具,其中一些比较流行且受欢迎的工具包括:1、UglifyJS(罗马尼亚):UglifyJS是一个非常流行的JavaScript工具库,它可以压缩、混淆、美化和格式化JavaScript代码。使用UglifyJS时,您可以通过调整参数来控制压缩级别并设置混淆选项。注:主要用于压缩j......
  • JavaScript代码加密:保护你的源代码
    一、引言 JavaScript是一种广泛使用的编程语言,常用于前端开发。然而,由于其源代码是公开可见的,因此很容易被他人查看和修改。这可能会导致代码的安全性和稳定性受到影响,甚至可能被恶意利用。因此,对JavaScript代码进行加密是非常重要的。 本文将介绍一些JavaScript代......
  • rabbitmq listener注解@RabbitListener里的queues是个数组,你用了吗?
    靠谱的程序员具有注重实效的偏执,对于重复多行的代码,总会想办法消除重复。我们zhongtai-channel里在调用服务商接口发起签约前,使用了mq进行异步处理。即:zhongtai-channel签约RPCAPI接收到上游的请求后,先同步持久化保存签约请求流水,然后将签约数据放入rabbitmq消息队列,等待程序里......
  • 33.最长连续子数组
    1.题目介绍33.最长连续子数组给定一个由若干0和1组成的数组A,我们最多可以将K个值从0变成1,返回仅包含1的最长(连续)子数组的长度时间限制:C/C++1秒,其他语言2秒空间限制:C/C++256M,其他语言512示例1输入例子:[1,1,1,0,0,0,1,1,1,1,0],2输出例子:6例子说明:可以将......
  • 【ECMAScript】提高JavaScript编程效率:掌握ES8的新特性和语法
    前言ECMAScript8,也称为ES8或ES2017,是JavaScript语言的最新标准。它在ES6的基础上进一步扩展了JavaScript的功能,为开发者提供了更多的工具和语法来编写高效、可维护的代码。本篇博客将详细介绍ES8的各种新特性及其用法,帮助读者更好地了解和掌握这个强大的语言标准。正文内容1.......