TS实现原生数组方法之slice()

2023-11-08

/**
 * @function slice
 * @description 返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝,不改变原数组
 * @param begin 可选参数,提取起始处的索引,省略则默认为0
 * @param end 可选参数,提取终止处的索引,提取不包含该位置元素,省略则默认到原数组的末尾
 * @returns Array 提取元素的新数组
 */

Array.prototype.slice = function <T>(start = 0, end?: number): T[] {
  const array = Object(this);
  const _len = array.length;
  let result: T[] = [];

  let formIndex = start >= 0 ? start : Math.max(0, _len + start);
  let toIndex = typeof end === 'number' ? Math.min(end, _len) : _len;
  toIndex = toIndex < 0 ? _len + end : end;

  const size = toIndex - formIndex;

  if (size > 0) {
    for (let i = formIndex; i < toIndex; i++) {
      result.push(array[i]);
    }
  }

  return result;
}
const fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
const citrus = fruits.slice(1, 3);
const res = fruits.slice(-2, -1);
console.log(citrus); // ['Orange', 'Lemon']
console.log(res); // [ 'Apple' ]
console.log(fruits); // ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TS实现原生数组方法之slice() 的相关文章

  • JavaScript 添加布尔值

    console log true true 2 console log typeof true true number console log isNaN true true false 为什么两个布尔类型相加会产生一个数字 我有点理解 如
  • 显示具有多个父代的 D3 树

    我目前有this http bl ocks org mbostock 4339083图已实现 我希望在描述具有多个父节点的子节点时保持结构和可折叠性 有没有办法做到这一点 我研究了力图 但我也想保留一组层次结构 这意味着 1 级的父级可以有
  • 在特定页面上执行 javascript 的正确“Rails”方式

    我试图在特定页面上运行 javascript 而我唯一的解决方案似乎是反模式 我有controller js内部生成的assets javascripts 我在用着gem jquery turbolinks 我的代码类似于以下内容 docu
  • Angular.js:如何从无序列表中获取 orderBy 或过滤器来工作?

    尝试根据价格和评级 在返回的对象中 进行排序 我宁愿用 ng click 和 li 来代替使用选择菜单 有没有办法做到这一点 我环顾四周 这是我能想到的最接近的 ul class restaurant filter li i class i
  • jQuery .push 到 .get 调用中的数组给出空结果

    谁能告诉我为什么下面给我一个空字符串 当我console log contentArray in the get 回调函数它显示数据 但是当我尝试在下面的代码中执行它时 结果为空 sectionArray contentArray func
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 通过扩展和实现的组合来理解 TS 的类型推断/缩小

    我有以下示例代码 class B implements Error name string message string stack undefined string function Foo x any if x instanceof E
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • JavaScript推送函数中的动态变量

    我在 JavaScript 中使用推送功能 var chartData for var i 0 i lt 3 i chartData push date new Date year s mon s date s hr s min s sec
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 用于选择特定 div 中具有特定类的锚元素的 jQuery 选择器是什么

    我有一些这样的代码 我想选择每个 a 带有类的标签status在 div 中foo div a class status a div 你可以这样做 foo find status a
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • 使用打字稿的 Angular 6 的黄金布局?

    我在用黄金布局 https golden layout com 与 Angular 6 一起 如下本教程 https npm taobao org package embedded enterprises ng6 golden layout

随机推荐

  • Conan

    环境 ubuntu bionic的docker image shell docker run it ubuntu bionic 预装工具 shell apt get install cmake 安装conan shell pip3 inst
  • ViT常见的模型规格以及源码记录

    ViT常见的模型规格以及源码记录 综述 介绍 网络结构 模型规格 源码实现 综述 论文题目 AN IMAGE IS WORTH 16X16 WORDS TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
  • Java设计模式——单例模式(Singleton Pattern)

    从上一篇文章Java设计模式 装饰模式 Decorator Pattern 中估计大家都已经对java设计模式有了初步的理解 今天呢 阿Q就给大家讲一下另一种设计模式 单例设计模式 首先我们先来了解一下它的概念 单例模式是设计模式中最简单的
  • Java架构直通车——Java基础面试考点清单

    文章目录 基础 J U C jvm虚拟机 数据结构 算法 Spring RPC通信框架 网络通信 MQ 缓存 Mybatis 其他技术 基础 强引用 弱引用 虚引用 软引用 final关键字的作用 方法 变量 类 泛型 泛型继承 泛型擦除
  • 谷歌浏览器常用插件

    1 高对比度模式 调节流量器界面的颜色方案 挑选自己喜欢的效果 2 Pocket 将浏览过的网站收藏到这里 方便后续阅读 未完待续
  • python实现分页功能

    python实现分页功能 class Pagination def init self current page per page num 10 self per page num per page num if not current p
  • python画箱线图代码_箱线图(Python代码)

    箱线图 理论 懒得介绍了 用五位数描述数据 能够准确稳定地描绘出数据的离散分布情况 不受异常值影响 不能精确地衡量数据分布的偏态和尾重程度 对于批量比较大的数据 反映的信息更加模糊以及用中位数代表总体评价水平有一定的局限性 plt boxp
  • go 进阶 go-zero相关: 四. 服务注册原理

    目录 一 基础 二 resolver 服务注册底层原理 1 创建registerEtcd函数 并将该函数封装到keepAliveServer结构体中 2 执行registerEtcd函数实现服务注册 3 registerEtcd 服务注册详
  • 从编程角度看SSL协议(2)ssl库--SSLContext类

    1 SSLContext类介绍 ssl库中除了提供SSLSocket类以外 还提供了SSLContext类 相比于SSLSocket类 SSLContext提供了丰富的属性 供我们修改和查看SSL握手时的参数 我们可以通过以下命令来实例化S
  • vue day02 error

    搭建路由的时候出问题了 但是最后貌似没有报错 我估计是版本兼容的问题 目前项目运行时没问题 也显示安装成功 看看以后使用会不会出问题吧 C Users little shark Desktop project SPH app gt cnpm
  • uni-app实现再次返回退出应用时不退出应用而是在后台运行

    如果APP需要后台驻留 用户返回到首页时会提示退出操作 我们可以不退出而是隐藏至后台 这样的话APP就会在后台运行 以下代码须写在main js里面 弹出的内容可自定义设 置 ifdef APP PLUS let main plus and
  • Python 将控制台输出另存为日志文件

    文章目录 Python 将控制台输出另存为日志文件 需求 方法一 使用 Logger 类 推荐 方法二 仅使用 sys 方法三 使用 logging 模块 参考文献 Python 将控制台输出另存为日志文件 需求 在 PyCharm 中或者
  • Linux底层开发之四书五经

    操作系统 Linux 内核设计与实现 第2 版 深入理解Linux 内核 第二版 Linux内核分析与编程 Linux方面的好书最多 其中 Linux 内核设计与实现 第2 版 Robert Love著 机械工业出版社出版译著 属短小精悍之
  • AI帮个忙(网页)

    首先 AI帮个忙站内目前有25种AI工具 主要包含有周报日报生成器 总结概括小助手 视频脚本生成器 小红书风格模拟器 餐厅或商品点评器 节日祝福 夸夸小助手 哄女朋友小助手 帅锅小助手等等多种有趣并且实用的小工具 在使用时也是非常简单的 找
  • 《银行法律法规》三、银行管理——2、公司治理、 内部控制与合规管理

    第二章 公司治理 内部控制与合规管理 第一节 公司治理 考点1 银行公司治理概述 商业银行公司治理是指股东大会 董事会 监事会 高级管理层 股东及其他利益相关者之间的相互关系 包括组织架构 职责边界 履职要求等治理制衡机制 以及决策 执行
  • 1071 小赌怡情(15 分) java

    1071 小赌怡情 15 分 常言道 小赌怡情 这是一个很简单的小游戏 首先由计算机给出第一个整数 然后玩家下注赌第二个整数将会比第一个数大还是小 玩家下注 t 个筹码后 计算机给出第二个数 若玩家猜对了 则系统奖励玩家 t 个筹码 否则扣
  • MySQL 对字符串使用 STR_TO_DATE() 函数

    Ptw cwl 前面我们利用 date formate 函数 按照自己希望的格式来输出日期时间 我们从用户界面接收到的信息都是以字符串的形式在进行传递 如何把字符串转换为日期类型进行存储呢 可使用 str to date 函数 把字符串转换
  • 【Ardunio小车】智能小车组装

    一 材料和工具 原智能小车底盘 电机 电池槽 5号电池 残缺一角的2WD V15智能小车底板 电机驱动板 ardunio板 剪钳 二 过程 1 用剪钳把残缺的底板剪规整 2 将长脚螺丝固定在原底盘上 3 在长脚螺丝上加上螺帽 4 找到合适的
  • 罗技鼠标 MM Mx Master 2 掉帧的一种解决方法

    入手MM已经月余了 不得不说这是MAC下的相当有力的助手 但是这几天发现掉帧严重 要不就卡 要不就飞 网上说需要调整蓝牙和wifi 的服务顺序 我也调整了 无效 忽然发现蓝牙设备里面有两个 MM 链接 因为MM可以同时接三个设备 而我不知道
  • TS实现原生数组方法之slice()

    function slice description 返回一个新的数组对象 这一对象是一个由 begin 和 end 决定的原数组的浅拷贝 不改变原数组 param begin 可选参数 提取起始处的索引 省略则默认为0 param end