首页 > 其他分享 >js数组一

js数组一

时间:2024-12-13 20:31:50浏览次数:3  
标签:arrayLike mapFn js 参数 数组 Array

Array构造函数

  • 创建Array对象
  • 调用Array()时可以使用或者不适用new,都会创建一个新的Array实例
  • 参数
    • elementN:根据给地的元素创建一个js数组,但是当仅有一个参数为数字时除外
    • arrayLength:如果传递给Array构造函数的唯一参数是介于0到2^32-1(含)之间的整数,这将返回一个新的js数组,其length属性设置为该数字(稀疏数组)
  • 异常
    • RangeError:如果只有一个参数且其值不在0到2^32-1之间,则会触发异常

静态方法

  • Array.from()
    • 从可迭代或类数组对象创建一个新的浅拷贝的数组实例
    • 语法:
      • Array.from(arrayLike)
      • Array.from(arrayLike, mapFn)
      • Array.from(arrayLike, mapFn, thisArg)
    • 参数
      • arrayLike:想要转换成数组的类数组或可迭代对象
      • mapFn:调用数组每个元素的函数。如果提供,每个将要添加到数组中的值首先会传递给该函数,然后将 mapFn 的返回值增加到数组中。使用以下参数调用该函数:
        • element:数组当前正在处理的元素
        • index:数组当前正在处理的元素的索引
      • thisArg:执行 mapFn 时用作 this 的值
  • Array.myfrom(arrayLike, mapFn=undefined, thisArg)
Array.myFrom = function (arrayLike, mapFn = undefined, thisArg) {
  // 定义报错需要类型和值一块返回的几种基本类型
  const typeList = ['number', 'string', 'boolean']
  let arrLike = arrayLike
  // 如果mapFn存在但是不为函数类型或者mapFn为null,报错
  if (mapFn !== undefined && typeof mapFn !== 'function') {
    const mapFnType = typeof mapFn
    throw new Error(
      `${
        typeList.includes(mapFnType) || mapFn === null
          ? `${mapFnType} ${mapFn}`
          : mapFnType
      } is not a function`
    )
  }
  // 如果参数是可迭代数组,直接使用扩展运算符转为数组
  if (arrayLike[Symbol.iterator]) {
    arrLike = [...arrayLike]
  }
  // 获取数组或者可迭代对象的length,并进行循环赋值
  const len = arrLike.length
  if (len >= 0 && len <= 2 ** 32 - 1) {
    // 构建一个长度为length的空数组
    let arr = new Array(len)
    for (let i = 0; i < len; i++) {
      // 循环赋值,如果存在mapFn函数,则使用mapFn函数处理每一项的值,如果值是undefined或者empty,则均转为undefined
      // 如果存在thisArg参数,则将mapFn的this指向mapFn
      arr[i] = mapFn
        ? mapFn.call(thisArg, arrLike[i], i)
        : arrLike[i] || undefined
    }
    return arr
  } else {
    // 超过数组长度范围报错
    throw new RangeError('Invalid array length')
  }
}

标签:arrayLike,mapFn,js,参数,数组,Array
From: https://www.cnblogs.com/shenhf/p/18605786

相关文章

  • 二级 字符数组(1)
    目录 大小写转换调换位置扫描识别判断是否构成回文删除指定字符倒置输出字符串字符统计调换位置题目描述将用逗号隔开的两个英语单词交换位置输出。输入一行以逗号隔开的两个英文单词。(字符串长度不超过100)输出将两个单词交换后输出的结果样例输入复制abc,de输......
  • JS-14 条件语句之switch
    多个if...else连接在一起使用的时候,可以转为使用更方便的switch结构表达式→值1→语块1→break;→表达式→值2→语块1→break;→表达式→defalut→默认语块→switch(fruit){case"banana"://...break;case"apple"://...default://...}需要注意的......
  • 7-10 sdut- C语言实验-数组逆序(数组移位)
    7-10sdut-C语言实验-数组逆序(数组移位)分数13全屏浏览切换布局作者 马新娟单位 山东理工大学有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m<n<100)个位置。输入格式:输入数据有2行,第一行的第一个数为n,后面是n个整数,第二行整数m。输出格式:......
  • 基于Java的springboot/SSM+vue.js+uniapp小程序软件学院学生成绩管理系统的附带文章源
    文章目录前言详细视频演示具体实现截图后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 找出一个数组中出现次数最多的那个元素。:JAVA
    packagecs2;importjava.util.Scanner;publicclassT11B{publicstaticvoidmain(String[]args){//创建一个Scanner对象用于从控制台读取输入Scannersc=newScanner(System.in);//读取整数n,表示数组的长度intn=sc.ne......
  • 实战攻防中针对JS路径的泄露和Webpack漏洞的初探
    0x1前言浅谈这篇文章给师傅们分享下前段时间跟其他师傅学习和交流的Webpack相关漏洞,这个漏洞相对来说比较冷门,在web漏洞中不是那么的热度高,但是平常去挖掘和发现这个漏洞相对来说还是不难的。后面要是有机会可以给师傅们分享下油猴的相关脚本去找Webpack漏洞泄露的js敏感......
  • 力扣刷题——3266. K 次乘运算后的最终数组 II
    根据题意,使用模拟解法,维护一个最小堆,始终对堆的第一个元素做乘,然后每次运算后维护堆。在实现的时候保存原有的下标,可以很方便的输出答案,有实现如下:classSolution{public:vector<int>getFinalState(vector<int>&nums,intk,intmultiplier){intMOD=1e9+......
  • 【寻迹#7】树状数组
    树状数组一、简介树状数组是一种支持单点修改和区间查询的,代码量小的数据结构。普通树状数组维护的信息及运算要满足结合律且可差分,如加法(和)、乘法(积)、异或等。事实上,树状数组能解决的问题是线段树能解决的问题的子集:树状数组能做的,线段树一定能做;线段树能做的,树状数组......
  • json转成数组,数组转成json,json编辑器
    module.exports={JSONToPathArr(data){constresArr=[]constpArr=['']constlist=[data]for(leti=0;i<list.length;i++){constjson=list[i]for(letkinjson){const......
  • ‌Bull是一个基于Redis的队列库,专为Node.js设计
    ‌Bull是一个基于Redis的队列库,专为Node.js设计,提供高性能和可靠的任务处理能力‌。它通过Redis作为后端存储,确保任务的持久性和高可用性。Bull的设计理念是简单、高效,同时具备强大的功能,能够满足各种复杂的任务调度需求‌12。Bull的主要功能‌高性能‌:Bull采用无轮询设计,极大......