前言

今天重温了一下Javascript,看到了数组的方法,其中有两个比较相似的方法——splice和splice,看着很像,就是多了一个p,但是用法却相当不一样。

在使用中,可以通过选择一个具有强语义表达性的 API 来减少混淆的发生。

1、slice

slice是指定在一个数组中的元素创建一个新的数组,即原数组不会变

数组的 slice (ECMAScript 5.1 标准 15.4.4.10 节)非常类似于字符串的 slice。根据规范,slice 需要两个参数,起点和终点。它会返回一个包含了从起点开始,到终点之前之间所有元素的新数组。

理解 slice 的功能并不是太难:

1
2
'abc'.slice(1,2)   // "b"
[14, 3, 77].slice(1, 2) // [3]

需要特别注意的是它并不会修改原数组。

下面的代码段描述了这个行为,x 的值没有变,y 则是被截取的部分。

1
2
3
4
var x = [14, 3, 77];
var y = x.slice(1, 2);
console.log(x);   // [14, 3, 77]
console.log(y);   // [3]

2、splice

splice是JS中数组功能最强大的方法,它能够实现对数组元素的删除、插入、替换操作,返回值为被操作的值。

splice删除:color.splice(1,2) (删除color中的1、2两项);

splice插入:color.splice(1,0,'brown','pink') (在color键值为1的元素前插入两个值);

splice替换:color.splice(1,2,'brown','pink')  (在color中替换1、2元素);

虽然 splice(15.4.4.12 节)也需要(至少)两个参数,但它的意义则完全不同。

1
2
[14, 3, 77].slice(1, 2)  // [3]
[14, 3, 77].splice(1, 2) // [3, 77]

除此之外,splice 还会改变原数组。

不要太惊讶,这正是 splice 的本意。

1
2
3
4
var x = [14, 3, 77]
var y = x.splice(1, 2)
console.log(x)   // [14]
console.log(y)   // [3, 77]

最新文章

  1. Go语言实战 - revel框架教程之CSRF(跨站请求伪造)保护
  2. 你必须知道的HTTP错误
  3. Dynamic CRM2016在一台本地服务器安装部署
  4. 64位Win7下安装与配置PHP环境【Apache+PHP+MySQL】
  5. ubuntu笔记1
  6. Scala 令人着迷的类设计
  7. MinGW下简单编译FFmpeg
  8. R语言︱基本函数、统计量、常用操作函数
  9. Entity Framework Core系列之DbContext
  10. JenKins自动化构建部署流程参考
  11. 为什么HashMap初始大小为16,为什么加载因子大小为0.75,这两个值的选取有什么特点?
  12. POJ1151-扫面线+线段树+离散化//入门题
  13. SpringCloud和Springboot
  14. linux 模拟发http请求的例子
  15. 遍历一个可迭代对象中的所有元素,但是却不想使用for循环
  16. LeetCode--008--字符串转换整数 (atoi)(java)
  17. Python学习笔记第二十四周(JavaScript补充)
  18. Python : 什么是*args和**kwargs[转载]
  19. java非web应用修改 properties/xml配置文件后,无需重启应用即可生效---自动加载
  20. IntelliJ IDEA 2017版 编译器使用学习笔记(一) (图文详尽版);IDE快捷键使用;IDE多行代码同时编写

热门文章

  1. [转]oracle in 多个字段
  2. RabbitMQ远程不能访问问题的解决
  3. iphone safari浏览器CSS兼容性的解决方案集合
  4. Java四中引用
  5. TCP Socket Http关系
  6. Hadoop HDFS 的 HttpFS
  7. multipartUpload上传图片到阿里云
  8. js-ES6学习笔记-Class(2)
  9. Tronado自定义Session
  10. 在线报表设计实战系列 – 制作多Y轴组合图表(8)