Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Javascript Slice 方法及其示例_创想鸟

Javascript Slice 方法及其示例

javascript slice 方法及其示例

什么是 javascript 数组切片?

array.prototype.slice 是一个 js array 方法,用于从现有数组中提取连续的子数组或“切片”。

javascript 切片可以接受两个参数:切片的开始和结束指示符——两者都是可选的。也可以在没有任何参数的情况下调用它。因此,它具有以下调用签名:

// slice();slice(start);slice(start, end);

如果我想对数组进行切片以获取其中的一部分,实际上有一个用于 javascript 的内置函数 slice 。开箱即用,它将克隆原始数组。

[1,2,3].slice() // [1,2,3]

结果指向新的内存地址,而不是原始数组。如果您想将结果与其他函数链接起来,这非常有用。真正的用法是当您向切片提供一些输入时。

开始索引

切片最多可以接受两个输入参数。第一个称为起始索引,这将告诉它应该从哪里开始切片。

[1,2,3].slice(0) // returns [1,2,3]; original array unmodified[1,2,3].slice(1) // returns [2,3]; original array unmodified[1,2,3].slice(2) // returns [3]; original array unmodified[1,2,3].slice(3) // returns []; original array unmodified

默认情况下,它将切片直到数组末尾。起始索引的有趣之处在于,不仅可以使用零或正数,还可以使用负数。

[1,2,3].slice(-1) // [3][1,2,3].slice(-2) // [2,3][1,2,3].slice(-3) // [1,2,3]

当为负数时,表示从 n 末尾开始计数的索引。例如,-1 指数组的最后一个元素,-2 指倒数第二个元素,等等。请注意,没有 -0 ,因为最后一个元素之外没有任何元素。根据具体情况,这可能非常明显或令人困惑。

结束索引

切片可以采用第二个参数,称为结束索引。

[1,2,3].slice(0,3) // [1,2,3][1,2,3].slice(0,2) // [1,2][1,2,3].slice(0,1) // [1]

结束索引,也称为范围索引,指向元素索引+1。这是什么意思?为了解释这一点,如果我们能联系到 for 语句就会相对容易一些:

for (let i = 0; i < n; i++) {}

变量 i 从 0 开始,即起始索引;并以结束索引 n 结束。结束索引不是数组的最后一个元素,因为那将是 n – 1 。但当谈到结束索引时,n 代表“结束”,包括最后一个元素。如果这是您第一次使用结束索引,只需记住 for 语句是如何编写的,或者只需记住获取最后一个元素索引,然后加一即可。另一种思考方式是结束索引是开放式的,[start, end)。

立即学习“Java免费学习笔记(深入)”;

与开始索引一样,结束索引也可以为负数。

1,2,3].slice(0,-1) // [1,2][1,2,3].slice(0,-2) // [1]

这里要多加注意。 -1 指的是最后一个元素,因此如果用作第二个参数,则意味着最后一个元素将被排除,正如我们所解释的,开放式。

很酷,但是如果我想包含最后一个元素怎么办?

[1,2,3].slice(0) // [1,2,3]

是的,只需使用单个参数输入即可。

如何使用 javascript 切片:真实示例

切片数组的一个典型示例涉及从源数组生成连续部分。例如,前三个项目、后三个项目以及从某个索引到另一个索引的一些项目。

如下例所示:

const elements = [  "please",  "send",  "cats",  "monkeys",  "and",  "zebras",  "in",  "large",  "cages",  "make",  "sure",  "padlocked",];const firstthree = elements.slice(0, 3); // ["please", "send", "cats"]const lastthree = elements.slice(-3, elements.length); // ["make", "sure", "padlocked"]const fromthirdtofifth = elements.slice(2, 5); // ["cats", "monkeys", "and"]

如果我们不向 javascript slice 传递任何参数,我们将获得包含所有项目的源数组的浅表副本:

const allcopied = elements.slice();// (12) ["please", "send", "cats", "monkeys", "and", "zebras", "in", "large", "cages", "make", "sure", "padlocked"]

它实际上是[…元素]。

没有第二个参数的 javascript 数组切片方法

如果我们不传递第二个参数,提取的 javascript 数组切片将扩展到最后一个元素:

const fromthird = elements.slice(2);// (10) ["cats", "monkeys", "and", "zebras", "in", "large", "cages", "make", "sure", "padlocked"]const lastthree = elements.slice(-3, elements.length);// (3) ["make", "sure", "padlocked"]const lastthreewithnosecarg = elements.slice(-3);// (3) ["make", "sure", "padlocked"]

具有负偏移量的 javascript array.prototype.slice

还请注意,我们可以传入负数作为参数。参数的负值表示从最后一项向后计数的偏移位置。我们可以对两个参数执行此操作:

const latesttwobeforelast = elements.slice(-3, -1);// (2) ["make", "sure"]

如果我们传入的 start 值大于 end 值,我们会得到一个空数组:

const somewherewedontknow = elements.slice(5, 2); // []

这表明我们必须始终从较小的正索引开始切片。

array.prototype.slice:起始位置大于数组长度

同样,如果我们传入的 start 值大于数组的长度,我们会得到一个空数组:

const somewhereinouterspace = elements.slice(15, 2); // []

将 js 切片与稀疏数组结合使用

如果我们的目标切片有稀疏项目,它们也会被复制:

const elements = [  "please",  "send",  ,  "cats",  ,  "monkeys",  "and",  "zebras",  "in",  "large",  "cages",  "make",  "sure",  "padlocked",];const sparseitems = elements.slice(0, 6);// (6) [ 'please', 'send', , 'cats', , 'monkeys' ]

array.prototype.slice:从参数列表创建数组

在本节中,我们对切片有点疯狂。我们使用 array.prototype.slice 开发了两种有趣的方法,从传递给函数的参数列表构造数组。

第一个:

const createarray = (...args) => array.prototype.slice.call(args);const array = createarray(1, 2, 3, 4);// (4) [1, 2, 3, 4]

这很容易。

执行此操作的下一个级别的方法是采用最混乱的方式:

const boundslice = function.prototype.call.bind(array.prototype.slice);const createarray = (...args) => boundslice(args);const array = createarray(1, 2, 3, 4);// (4) [1, 2, 3, 4]

切片 javascript 字符串

const mnemonic =  "please send cats monkeys and zebras in large cages make sure padlocked";const firstthreechars = mnemonic.slice(0, 3); // "ple"const lastthreechars = mnemonic.slice(-3, mnemonic.length); // "ked"const fromthirdtofifthchars = mnemonic.slice(2, 5); // "eas"

同样,两个参数都表示从零开始的索引号或偏移值。这里,第一个参数——firstthree赋值中的0——代表源数组中的起始索引或偏移量。第二个参数 (3) 表示提取应停止之前的索引或偏移量。

javascript 字符串切片的细微差别

使用不带参数的 javascript 字符串切片

与数组切片类似,如果我们不向 string slice() 传递任何参数,则会复制整个字符串:

const mnemonic =  "please send cats monkeys and zebras in large cages make sure padlocked";const memorizedmnemonic = mnemonic.slice();// "please send cats monkeys and zebras in large cages make sure padlocked"

具有负偏移量的 javascript 字符串切片

与array.prototype.slice类似,start和end的负值表示距数组末尾的偏移位置:

const mnemonic =  "Please Send Cats Monkeys And Zebras In Large Cages Make Sure Padlocked";const lastThreeChars = mnemonic.slice(-3); // "ked"const latestTwoCharsBeforeLast = mnemonic.slice(-3, -1);  // "ke"

概括

在这篇文章中,我们阐述了 javascript 中的 slice() 方法。我们看到 javascript 以两种方式实现 slice():一种用于使用 array.prototype.slice 的数组,另一种用于使用 string.prototype.slice 的字符串。我们通过示例发现,这两种方法都会生成源对象的副本,并用于从中提取目标连续切片。

我们介绍了几个示例,说明函数组合和使用 function.prototype.call 和 function.prototype.bind 进行上下文绑定如何允许我们使用 array.prototype.slice 定义自定义函数,以帮助我们从参数列表生成数组.

我们还看到 string.prototype.slice 是 array.prototype.slice 的相同实现,它消除了将字符串转换为字符数组的开销。

以上就是Javascript Slice 方法及其示例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1491652.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
掌握 JavaScript 中的循环:`while`、`dowhile` 和 `for`
上一篇 2025年12月19日 14:09:12
如何在 React 中访问提供者外部的上下文时处理错误
下一篇 2025年12月19日 14:09:39

相关推荐

  • windows怎么查看cpu核心数和线程数 windows查看cpu核心与线程数教程

    windows怎么查看cpu核心数和线程数 windows查看cpu核心与线程数教程windows怎么查看cpu核心数和线程数 windows查看cpu核心与线程数教程windows怎么查看cpu核心数和线程数 windows查看cpu核心与线程数教程windows怎么查看cpu核心数和线程数 windows查看cpu核心与线程数教程

    首先通过任务管理器查看CPU核心数和线程数,依次使用系统信息工具、PowerShell命令及命令提示符查询,四种方法均可准确获取联想小新Pro 16在Windows 11系统下的处理器核心与线程信息。 如果您需要了解计算机的处理器性能或进行系统优化,查看CPU的核心数和线程数是基础操作。掌握这些信息…

    2026年9月26日 • 用户投稿
    100
  • 优化快速排序:避免大型数组的栈溢出错误

    优化快速排序:避免大型数组的栈溢出错误优化快速排序:避免大型数组的栈溢出错误优化快速排序:避免大型数组的栈溢出错误优化快速排序:避免大型数组的栈溢出错误

    快速排序在处理大型数组时,由于递归深度过大可能导致栈溢出错误。本文将详细介绍如何通过优化递归策略,即始终对较小分区进行递归调用,并使用循环处理较大分区,从而将递归深度限制在对数级别(O(log n)),有效避免栈溢出,同时保持算法的平均时间复杂度。 快速排序与栈溢出挑战 快速排序(quicksort…

    2026年9月26日 • 用户投稿
    500
  • linux必学常用命令有哪些

    linux必学常用命令有哪些linux必学常用命令有哪些linux必学常用命令有哪些linux必学常用命令有哪些

    Linux 入门必学的常用命令包括:文件与目录管理:列出、创建、移动、复制和删除文件与目录。文件内容操作:查看、逐页查看、搜索和按行显示文件内容。系统信息:查看系统版本、运行时间、磁盘和内存使用情况。用户与权限:显示当前用户、添加用户和组、更改密码。网络:测试连接、显示网络接口信息、查询 DNS 记…

    2026年9月26日 • 用户投稿
    000
  • 实现搜索结果按字母排序:PHP结合Ajax的专业教程

    本文档旨在提供一种使用PHP和Ajax对通过POST方法获取的搜索结果进行A-Z排序的解决方案。我们将创建一个表单,保存POST数据,并利用PHP函数对医生列表进行排序,最终通过Ajax实现无需刷新页面的排序功能。 1. 修改 search.php 文件 首先,我们需要在 search.php 文件…

    2026年9月26日
    000
  • Kali Linux 2020.4 安装教程 超级详细 适合新手入门

    Kali Linux 2020.4 安装教程 超级详细 适合新手入门Kali Linux 2020.4 安装教程 超级详细 适合新手入门Kali Linux 2020.4 安装教程 超级详细 适合新手入门Kali Linux 2020.4 安装教程 超级详细 适合新手入门

    大家好,很高兴再次与大家见面,我是你们的朋友全栈君。今天我们将详细介绍如何安装kali linux 2020.4版本。更新时间:2021年2月2日,使用版本:2020.4。官方镜像下载地址如下: 一、虚拟机配置 我们将使用虚拟机软件VMware Workstation Pro 16来进行安装。首先,…

    2026年9月26日 • 用户投稿
    200
  • 《大侠立志传外传》立项部分原因:更新影响热情

    《大侠立志传外传》立项部分原因:更新影响热情《大侠立志传外传》立项部分原因:更新影响热情《大侠立志传外传》立项部分原因:更新影响热情《大侠立志传外传》立项部分原因:更新影响热情

    近日,半瓶醋工作室正式宣布其新作《大侠立志传外传》已登陆steam商店。本作延续了《大侠立志传》的世界观,是一部具有外传性质的衍生作品。官方同时分享了游戏背后的开发故事,并透露了此次新作立项的初衷。 作为团队首款独立开发的作品,《大侠立志传》因经验有限存在不少遗憾。游戏上线后,工作室曾通过频繁的版本…

    2026年9月26日 • 用户投稿
    000
  • realmeNarzo手机微信收款语音播报如何设置?配置语音提示教程

    答案:确保微信收款语音提醒开启,并检查Realme Narzo的媒体音量、通知权限、电池优化及勿扰模式。具体操作为:开启微信“收款到账语音播报”功能,调高播报音量;确认手机媒体音量未静音;在系统设置中允许微信通知并启用“支付通知”声音;将微信加入电池优化白名单,禁止后台限制;关闭勿扰模式。若仍无效,…

    2026年9月26日
    100
  • 苹果最新款是15还是16

    苹果最新款是15还是16苹果最新款是15还是16苹果最新款是15还是16苹果最新款是15还是16

    苹果最新款是 iPhone 16 系列,于 2022 年 9 月 7 日发布,包括四款机型:iPhone 16、iPhone 16 Plus、iPhone 16 Pro 和 iPhone 16 Pro Max,具有以下主要特点:全新设计、动态岛、改进的相机、A16 仿生芯片和更长的电池续航时间。 苹…

    2026年9月26日 • 用户投稿
    000
  • 网易云音乐网页版在线播放网址 网易云音乐网页版官网登录入口

    网易云音乐网页版官网登录入口为https://music.163.com/,支持在线播放、MV搜索、歌单管理、电台收听及内容收藏分享等功能,界面简洁,适配多设备,涵盖新碟、榜单、独立音乐人及场景化音频内容。 网易云音乐网页版在线播放网址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来网易云…

    2026年9月26日
    000
  • 悟空浏览器怎么把网页保存为图片_悟空浏览器将整个网页另存为图片教程

    悟空浏览器怎么把网页保存为图片_悟空浏览器将整个网页另存为图片教程悟空浏览器怎么把网页保存为图片_悟空浏览器将整个网页另存为图片教程悟空浏览器怎么把网页保存为图片_悟空浏览器将整个网页另存为图片教程悟空浏览器怎么把网页保存为图片_悟空浏览器将整个网页另存为图片教程

    使用悟空浏览器可将网页保存为图片:1. 通过菜单选择“长截屏”自动拼接完整页面;2. 利用分享功能调用系统截图工具生成图片;3. 将网页另存为HTML后借助第三方工具转换为图像格式。 如果您在浏览网页时希望将整个页面保存为图片以便分享或存档,但不确定如何操作,可以通过悟空浏览器的内置功能实现。以下是…

    2026年9月26日 • 用户投稿
    100
  • Oracle安装成功后的验证步骤

    Oracle安装成功后的验证步骤Oracle安装成功后的验证步骤Oracle安装成功后的验证步骤Oracle安装成功后的验证步骤

    Oracle作为一种强大的数据库管理系统,在安装成功后需要进行一系列的验证步骤,以确保安装过程正确无误。本文将介绍Oracle安装成功后的验证步骤,并提供具体的代码示例。 在Oracle数据库安装完成后,首先需要验证数据库的实例是否正常启动,以及数据库是否可以正常访问。以下是一些验证步骤和代码示例:…

    2026年9月26日 • 用户投稿
    000
  • 一篇文章带你深入了解Flink SQL流处理中的特殊概念

    一篇文章带你深入了解Flink SQL流处理中的特殊概念一篇文章带你深入了解Flink SQL流处理中的特殊概念一篇文章带你深入了解Flink SQL流处理中的特殊概念一篇文章带你深入了解Flink SQL流处理中的特殊概念

    本文深入探讨了flink sql流处理中的特殊概念,主要包括表与流处理的区别、动态表的概念以及流式持续查询的过程。以下是详细介绍。 一、流处理和关系代数(表,及 SQL)的区别 可以看出,关系代数(主要指关系型数据库中的表)和 SQL 主要针对批处理,这与流处理存在天然的差异。 二、动态表(Dyna…

    2026年9月26日 • 用户投稿
    100
  • sublime的gitgutter插件怎么用_sublime GitGutter插件使用方法

    sublime的gitgutter插件怎么用_sublime GitGutter插件使用方法sublime的gitgutter插件怎么用_sublime GitGutter插件使用方法sublime的gitgutter插件怎么用_sublime GitGutter插件使用方法sublime的gitgutter插件怎么用_sublime GitGutter插件使用方法

    GitGutter是Sublime Text插件,可在行号旁显示Git修改状态。安装需通过Package Control搜索并安装GitGutter,完成后在Git仓库中自动显示+(新增)、~(修改)、-(删除)、▶(移动)图标,颜色分别为绿、黄、红。默认启用实时检测,可设置保存后更新或禁用,支持自…

    2026年9月26日 • 用户投稿
    100
  • 操作指南:如何将抖音订单导入拼多多店铺

    操作指南:如何将抖音订单导入拼多多店铺操作指南:如何将抖音订单导入拼多多店铺操作指南:如何将抖音订单导入拼多多店铺操作指南:如何将抖音订单导入拼多多店铺

    为何要将抖音订单同步至拼多多店铺 作为国内领先的社交电商平台,拼多多拥有庞大的用户流量,与抖音的广泛受众高度契合。将抖音平台的订单数据导入拼多多店铺,已成为电商运营者提升效率的重要手段。此举不仅有助于增强店铺在多平台的曝光度,还能实现订单的集中化管理,提升整体运营效率。 具体操作步骤:从抖音导入订单…

    2026年9月26日 • 用户投稿
    000
  • 绝区零艾米莉安强度怎么样 绝区零艾米莉安强度介绍

    绝区零艾米莉安强度怎么样 绝区零艾米莉安强度介绍绝区零艾米莉安强度怎么样 绝区零艾米莉安强度介绍绝区零艾米莉安强度怎么样 绝区零艾米莉安强度介绍绝区零艾米莉安强度怎么样 绝区零艾米莉安强度介绍

    一、邦布介绍 “百万丁尼,积于邦布。” 这只邦布其实在游戏中登场非常早,甚至在邦布系统功能尚未正式开放时,就已经在主线剧情中露面,并协助【狡兔屋】完成任务。艾米莉安正是隶属于【狡兔屋】的专属邦布,技能名称也颇具特色——“扫债者”、“混迹街头守则”、“扫清债务”等,充满组织气息。 二、技能解析 艾米莉…

    2026年9月26日 • 用户投稿
    000
  • laravel任务调度的介绍(附代码)

    本篇文章给大家带来的内容是关于laravel任务调度的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 导语:之前写过使用 Linux 的进行定时任务,实际上 laravel 也可以执行定时任务。需求是统计每日访问的 IP 数,虽然数据表中有数据,为了演示,新建监听器统…

    2026年9月26日
    700
  • linux常用命令删除怎么用

    linux常用命令删除怎么用linux常用命令删除怎么用linux常用命令删除怎么用linux常用命令删除怎么用

    删除 Linux 文件的命令:rm 命令:立即删除指定文件。rm -r 命令:删除目录及其所有内容。unlink 命令:删除文件名称与 inode 链接。shred 命令:安全删除文件,多次覆盖其内容。 Linux 中删除文件的常见命令 rm 命令 rm 命令是最常用的文件删除命令。它会立即删除指定…

    2026年9月26日 • 用户投稿
    100
  • QQ好友动态无法查看怎么办

    QQ好友动态无法查看怎么办QQ好友动态无法查看怎么办QQ好友动态无法查看怎么办QQ好友动态无法查看怎么办

    首先检查好友动态权限,确认是否被限制访问;再核实自身账号状态,排除被拉黑可能;接着清除QQ缓存并更新至最新版本;最后尝试切换网络或使用网页端查看。 QQ好友动态无法查看,通常和权限设置、网络问题或软件异常有关。先别着急,可以按以下方法逐一排查解决。 检查好友的动态权限设置 有些好友设置了动态访问权限…

    2026年9月26日 • 用户投稿
    000
  • 如何查看Oracle的安装版本

    如何查看Oracle的安装版本如何查看Oracle的安装版本如何查看Oracle的安装版本如何查看Oracle的安装版本

    如何查看Oracle的安装版本以及具体代码示例 Oracle数据库是世界上最受欢迎的关系型数据库管理系统之一,其版本繁多,每个版本都有不同的特点和功能。在进行Oracle数据库管理和维护工作时,了解数据库的安装版本是非常重要的。本文将介绍如何查看Oracle数据库的安装版本,并提供具体的代码示例。 …

    2026年9月26日 • 用户投稿
    700
  • NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场

    NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场NVIDIA仍占67% 5年后AMD能抢4%的AI显卡市场

    英伟达总市值逼近4.5万亿美元#英伟达 这两年来ai领域最大的赢家并非微软、谷歌或openai,而是nvidia。凭借在ai gpu领域的绝对主导地位,nvidia不仅实现了业绩的爆发式增长,更在近期将公司市值推向了约4.5万亿美元的历史新高。 在AI显卡市场,NVIDIA几乎处于垄断地位。尽管不同…

    2026年9月26日 • 用户投稿
    1100

发表回复

登录后才能评论
关注微信