substring 和 substr

这二货都是针对字符串而言的,且都是返回一个副本,而不是在原字符串上直接操作。

上代码:

var str = '0123456789';

console.log( str.substring(1) ); // 123456789。第二个参数留空则默认截取到结束
console.log( str.substr(1) ); // 123456789 console.log( str.substring(2, 5) ); // 234。区间为[2, 5)
console.log( str.substr(2, 5) ); // 23456。区间为[2, 2+5-1]
console.log( str.substr(-4) ); // 6789。截取后四位 console.log( str ); // 0123456789。原字符串并没有发生变化

记忆:
substring($1, $2) 比较长,因此截取得短,区间表示为 [$1, $2) 。$1 表示起始下标,$2 表示截止下标。

substr($1, $2) 比较短,因此截取得长,区间表示为 [$1, $1+$2-1] 。$1 表示起始下标,$2 表示截多少个。

两者的 $2 留空则都默认截取到结束。

substr 短小精悍,$1 竟然还能接受负数,返回末尾的$1 位。

slice 和 splice

这二货都是针对数组而言(我不会告诉你字符串也能用 slice )。
但 splice 是直接在数组上操作(直接在数组上操作的还有 pop/push/shift/unshift/sort/reverse/concat)。

下面看例子:

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

console.log( arr.slice(1) ); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log( arr.splice(1) ); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log( arr ); // [0]。被 splice 砍剩下的 arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // 重新补血。。。 console.log( arr.slice(2, 5) ); // [2, 3, 4]
console.log( arr.splice(2, 5) ); // [2, 3, 4, 5, 6]
console.log( arr ); // [0, 1, 7, 8, 9]

记忆:
区分两者的方式,首先就是记住 装逼大法 :

// 将伪数组转数组,不能伤害 arguments 本身,因此 slice 显然就是返回副本

// 将伪数组转数组,不能伤害 arguments 本身,因此 slice 显然就是返回副本
Array.prototype.slice.call(arguments);

还有就是, splice 里面有一个 p ,看起来像一把刀,直接砍在数组身上!!!(雅蠛蝶~~~)

其次就是,slice 谐音 死赖,臭不要脸的死赖皮,因此在社会上死赖越 少 越好(区间范围小)。
而 splice 看起来有英文 police 的感觉,警察肯定是越 多 越安全啦(区间范围大)~~~

因此:
slice($1, $2) 并非在原数组上操作,而是返回被切部分的副本。区间表示为[$1, $2) 。$1 是起始下标,$2 是截止下标。

splice($1, $2) 直接在原数组上操作,返回被切掉的部分。区间表示为 [$1, $1+$2-1] 。 $1 是起始下标, $2 是切多少个。

最后的最后,就是由于二者拼写长度仅相差一个字母,因此二者的 $1 均能接受负数。

最新文章

  1. 64位电脑上配置mysql-connector-odbc的方法
  2. Arrya数组添加过滤条件
  3. BeanShell用法汇总(部分摘抄至网络)【转】
  4. CvMat 矩阵的使用方法和简单程序
  5. 关于Schema设计规范及SQL使用建议
  6. 在Windows的DOS中运行java编程中的问题
  7. java 之 代理模式(大话设计模式)
  8. xhprof 运行结果名词解释
  9. 第2章 Java基本语法(下): 流程控制--项目(记账本)
  10. 51nod1305
  11. luogu2149 Elaxia的路线 (dijkstra+拓扑dp)
  12. codeforces 758D Ability To Convert【DP】
  13. JDK1.7+Tomcat6.0+MyEclipse8.6在win7下的安装与配置
  14. 【Android】Android开源项目精选(一)
  15. DateTimePicker用法
  16. 【转】 H.264编码原理以及I帧B帧P帧
  17. 使用sp_executesql
  18. Centos7中安装Python3
  19. iOS边练边学--通讯录练习之Segue使用,控制器的数据传递
  20. UVaLive 3126 Taxi Cab Scheme (最小路径覆盖)

热门文章

  1. 「LuoguP3376」 【模板】网络最大流
  2. [TJOI 2018] XOR
  3. myeclipse_JUnit导包问题
  4. 2018值得选用的五个Linux服务器发行版
  5. .NETFramework:Thread
  6. windows安装PHP5.4+Apache2.4+Mysql5.5
  7. 2.5 Hive中外部表的讲解
  8. sql之临时表
  9. 多叉树结构:JSON数据解析(二)
  10. python接口自动化(三十七)-封装与调用--读取excel 数据(详解)