slice,Array.prototype.slice,Array.protyotype.slice.call
slice
特点:基于当前数组中的一或多个项创建一个新数组。【原数组不会被修改】
返回结果:返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。
语法:
arr.slice(); arr.slice(start); arr.slice(start,end);
参数解释:
start:
1、从该索引开始获取原数组的元素-------从0开始
2、为负数:表示从原数组中倒数第几个元素开始。例子:slice(-2)----->表示提取原数组中的倒数第二个元素到最后一个元素
3、如果省略start,默认从0开始
end:
1、slice会提取原数组中从begin到end的所有元素【包含begin,不包含end】。
例子:slice(2,4);------>提取索引为2、3的元素
2、为负数:表示从原数组中的倒数第几个元素结束抽取
例子:slice(-2,-1);------->抽取原数组中倒数第二个元素【不包括最后一个元素,即:倒数第一个元素】。
3、如果省略end/end大于数组长度,slice会一直提取到原数组末尾。
******也可以这样说:如果参数里面有负数,可以将这个负数与数组长度值相加,从而得到相应的位置。
例子:
var arr=[1,2,3,4,5,6];
arr.slice(-2,-1)等价于arr.slice(4,5)
补充!!!!
slice不修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。原数组会按照以下规则拷贝:
1、如果该元素是个对象引用(不是实际的对象),slice会拷贝这个对象引用到新的数组里。【两个对象引用都引用了同一个对象-------如果被引用的对象发生改变,则新旧数组中的对应元素也会发生变化。】
2、对于字符串、数字以及布尔值来说(不是String,Number,Boolean对象),slice会拷贝这些新值到新的数组里,在别的数组里修改这些字符串/数字/布尔值,都不会影响另外一个数组
3、如果随意向两个数组添加新元素,不会影响另外一个数组。
slice还可以将一个类数组(Array-like)对象-----【例:arguments】或者集合转换成一个数组。
//使用 Array.prototype.slice.call(arguments) function list() {return Array.prototype.slice.call(arguments); //或者使用 [].slice.call(arguments) } var list1 = list(1, 2, 3); // [1, 2, 3]//使用bind简化该过程 var unboundSlice = Array.prototype.slice; var slice = Function.prototype.call.bind(unboundSlice);function list() {return slice(arguments); }var list1 = list(1, 2, 3); // [1, 2, 3]
博客内容源于:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
转载于:https://www.cnblogs.com/Jm-jing/p/6903306.html
slice,Array.prototype.slice,Array.protyotype.slice.call相关推荐
- 【JavaScript笔记 · 基础篇(五)】Array全家桶(引用数据类型中的数组 / Array对象 / Array.prototype)
文章目录 一. 引用数据类型中的数组 1.1 概述 1.2 初始化 1.2.1 字面量 1.2.2 构造函数模式 1.3 访问 1.4 length属性 1.5 数组遍历 1.6 类数组对象 1.6. ...
- JavaScript Array.prototype.some()
本文来源于:http://itkaiyuan.com/2016/01/07/527.html 转载注明出处! some() 方法测试数组中某些元素是否通过了指定函数的测试. 语法 array.some ...
- Array.isArray() instanceof Array
Array.isArray() 用于确定传递的值是否是一个 Array. H5新增的方法 ie9以上版本支持 Array.isArray([1, 2, 3]); // true Array.isArr ...
- [转载]Array.prototype.slice.call(arguments,1)原理
Array.prototype.slice.call(arguments,1)该语句涉及两个知识点. arguments是一个关键字,代表当前参数,在javascript中虽然arguments表面上 ...
- js Array.prototype.slice.call(arguments,0) 理解
Array.prototype.slice.call(arguments,0) 经常会看到这段代码用来处理函数的参数 网上很多复制粘帖说:Array.prototype.slice.call(argu ...
- Array.prototype.slice.call(arguments)对象转成数组
转成数组的通用函数 1 var toArray = function(s){ 2 try{ 3 return Array.prototype.slice.call(s); 4 } catch(e){ ...
- Array.prototype.slice.call(arguments)
Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与co ...
- Array.prototype.slice.call
Array.prototype.slice.call(arguments,0)就类似于arguments.slice(0),但因为arguments不是真正的Array,所以它没有slice这个方法. ...
- Array.prototype.slice.call 将伪数组转成真数组的原理是什么?
好久没上SF,昨天上来看到一个问题,引起了我的兴趣.一番探索和研究后,有了此篇文章,也算是对该问题的解答. let pretendArr = {0:0,1:1,2:2,length:3}; [].sl ...
最新文章
- linux apache配置多线程,linux apache 日志配置
- 抛弃VS Code,我还能用啥编辑器?| 技术头条
- h.264码流解析_一个SPS的nalu及获取视频的分辨率
- 数据库里面的id不是连续的,遍历的时候
- 第四届国际软件自由日在西安邮电学院的发言
- Matlab 条形图实例
- 有趣的灵魂连墓碑都很酷! | 今日趣图
- JavaScript从入门到放弃 -(四)E5 新增方法
- seo提交工具_经验分享:SEO新手面对新网站应该如何去优化
- eviews 9.5新版本——平均预测、面板效应检验
- linux下如何部署php,linux如何部署php
- c vb java switch语句是_groovy嵌入switch语句 - Groovy教程
- 网络计算机自动显示,怎么设置电脑断网后自动报警提醒?
- spring源码解析之---InstantiationAwareBeanPostProcessor解析
- 如何在markdown中打出上标、下标和一些特殊符号 from jianshuer 这是朕的江山
- 作业报告12 定期存款利息计算器
- 哪些是性价比高的骨传导蓝牙耳机,五款骨传导蓝牙耳机推荐
- 安装sts插件遇到的问题,cannot perform
- 【linux】 下根目录,家目录区别
- Java开源Web开发框架
热门文章
- C#开发ActiveX控件及制作CAB包
- 几种字符串到byte[] 数组转化为String 的方法
- ListView(2)
- Pytorch —— 模型保存与加载
- 去哪儿-14-vuex_localstorage
- Golang基本数据类型的相互转换
- 扩展欧几里得exgcd算法 acm寒假集训日记22/1/12
- STM32 - 定时器的设定 - 基础-04 - 输出波形控制 - PWM 模式
- python爬虫requests源码链家_python爬虫——爬取链家房价信息(未完待续)
- a href点击无效_jquery click()方法模拟点击事件对a标签不生效的解决办法