JavaScript中的Array对象提供了一个slice()方法,用于从已有的数组中返回选定的元素。

arrayObject.slice(start, end)

参数说明

start 必需(否则没有意义)。规定从何处开始选取,即提取起始处的索引(从0开始),从该索引开始提取原数组元素。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1指最后一个元素,-2指倒数第二个元素,以此类推。如果没有指定该参数,则从索引0开始。如果该参数大于原数组的长度,则会返回空数组。
end 可选。规定从何处结束选取,该参数是数组片断结束处的数组下标,即提取终止处的索引(从0开始),在该索引处结束提取原数组元素,该方法会提取原数组中索引从start到end的所有元素(包含start,但不包含end)。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。如果没有指定该参数,那么切分的数组包含从start到数组结束的所有元素。如果该参数大于数组的长度,也会一直提取到原数组末尾。

返回值

返回一个新的数组,包含从start到end(不包括该元素)的arrayObject中的元素。

注意事项

这个方法并不会修改原来的数组,而是返回一个浅复制了原数组中的元素的一个新数组。浅复制的意思就是说,如果向两个数组任一中使用Array.push()添加了新元素或使用Array.splice()方法移除了元素,另一个是不会受到影响的;但是如果修改了数组中的元素,则情况会因为数组中的元素类型不同而有所不同。

1.如果该元素是个对象引用 (不是实际的对象),slice()方法会拷贝这个对象的引用到新的数组里。也就是说,两个数组中的这两个元素都引用了同一个对象,如果被引用的对象发生改变,则新的和原来的数组中的这个元素也会同步发生改变。

2.对于字符串、数字及布尔值来说(不是String、Number或者Boolean对象),slice()方法会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值,将不会影响另一个数组。

简单示例1

var arr = ["yanggb1", "yanggb2", "yanggb3"];
var arr1 = arr.slice(1, 2); // ["yanggb2"]

简单示例2

var arr = ["yanggb1", "yanggb2", "yanggb3"];
var arr1 = arr.slice(1); // ["yanggb2", "yanggb3"]

巧妙用处

这个方法在截断需要的格式化日期的场景中十分好用,我们来感受一下。

var today = '2019-05-20';
// 我想要yyyy-MM-dd的形式
var today1 = today.split('-').slice(0).join('-'); // 2019-05-20
// 我想要MM-dd的形式
var today1 = today.split('-').slice(1).join('-'); // 05-20
// 我想要dd的形式
var today2 = today.split('-').slice(2).join('-'); //

如果要切换不同的日期形式,只需要修改slice()方法中的参数即可,十分灵活。

"其实生活在井里也挺好的,就是偶尔,会觉得世界很空,生活很咸。"

javascript中的slice()方法的更多相关文章

  1. javascript中的splice方法介绍&示例

    javascript 中的 splice 方法很强大,它可以用于插入.删除或替换数组的元素. 下面来一一介绍! 删除:用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数 ...

  2. javascript中的toString()方法

    javascript中的toString()方法,主要用于Array.Boolean.Date.Error.Function.Number等对象.下面是这些方法的一些解析和简单应用,做个纪律,以作备忘 ...

  3. JavaScript中的工厂方法、构造函数与class

    JavaScript中的工厂方法.构造函数与class 本文转载自:众成翻译 译者:谢于中 链接:http://www.zcfy.cc/article/1129 原文:https://medium.c ...

  4. 巧用Javascript中的slice()

    slice()是Javascript中Array的一个方法,定义是这样的. arrayObject.slice(start,end)作用是从原数组中从start到end位置截取出一个新的数组,返回值是 ...

  5. JavaScript中数组Array方法详解

    ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...

  6. javascript中数组的方法你真的都了解吗?

    本篇文章主要讲述ES5中的数组,包括数组两种创建方式,属性,以及 9 大类 ,总共23个操作方法,非常全面,看完之后ES5数组这一部分基本都了解了,下一篇文章,我会讲述ES6中对数组的加成,新增了哪些 ...

  7. JavaScript中的bind方法及其常见应用

    一.bind()方法的实现 在JavaScript中,方法往往涉及到上下文,也就是this,因此往往不能直接引用.就拿最常见的console.log("info…")来说,避免书写 ...

  8. javascript中常用数组方法详细讲解

    javascript中数组常用方法总结 1.join()方法: Array.join()方法将数组中所以元素都转化为字符串链接在一起,返回最后生成的字符串.也可以指定可选的字符串在生成的字符串中来分隔 ...

  9. 你真的会用JavaScript中的sort方法吗

      在平时的业务开发中,数组(Array) 是我们经常用到的数据类型,那么对数组的排序也很常见,除去使用循环遍历数组的方法来排列数据,使用JS数组中原生的方法 sort 来排列(没错,比较崇尚JS原生 ...

随机推荐

  1. (Nginx+PHP+MySQL)单机+Redis部署

    链接:Nginx+PHP+MySQL+Redis多机部署 1.lnmp+redis工作机制 2.lnmp+redis操作步骤(lnmp为单机部署) (1)lnmp+redis实战环境 lnmp服务器: ...

  2. Python中的Base64编码的加密与解密

    Base64 可以干些啥? Base64编码的作用: 由于某些系统中只能使用ASCII字符.Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法. 图片(and种子)base64 ...

  3. 首次自动化测试,使用selenium+scapy

    痛苦而艰难 才写出这一点点,这是个登陆测试 main # -*- coding: utf-8 -*- from selenium import webdriver import login_tst i ...

  4. Docker (二) Windows10专业版安装教程

    前言 本文将基于 windows10专业版 来安装docker 1.开启Hyper-V 温馨小提示:之前小编是windows10企业版没有Hyper-V这个功能,于是通过DockerToolbox安装 ...

  5. Koa中间件(middleware)级联原理

    前言 上次看到了koa-compose的代码,今天来说一下koa中间件的级联以及工作原理. 中间件工作原理 初始化koa实例后,我们会用use方法来加载中间件(middleware),会有一个数组来存 ...

  6. shell 100

    1.编写hello world脚本 #!/bin/bash# 编写hello world脚本 echo "Hello World!"2.通过位置变量创建 Linux 系统账户及密码 ...

  7. org.eclipse.emf.ecore.xmi.FeatureNotFoundException: Feature 'taglib' not found

    tomcat7,部署tomcat6下的项目统,报tomcat 7: IllegalArgumentException: taglib definitionnotconsistentwithspecif ...

  8. 手动启动Oracle服务的.bat文件

    Oracle数据库的基本服务会占用很大的内存,有的程序员会在不用的时候Oracle服务关闭来减少对电脑内存资源的占用. 我在这准备了一个可以开启/关闭Oracle服务的bat文件,希望被采纳!!! 新 ...

  9. vue-cli项目中引入第三方插件

    前言 最近有小伙伴问道如何在vue-cli项目中引入第三方插件或者库,例如如果想在项目中使用jQuery中的Ajax请求数据呢?或者我想使用Bootstrap框架呢?等等这些问题,本篇博客将带你学习如 ...

  10. 手把手教你DIY尼康ML-L3红外遥控器

    项目介绍 ML-L3是用于尼康部分型号相机的无线红外遥控器,可以通过红外方式来控制快门的释放,支持B门拍摄.官方售价100RMB左右,山寨版售价10RMB左右.虽然也能实现基本的遥控功能,但是功能还是 ...