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 均能接受负数。

substring和substr,slice和splice的更多相关文章

  1. 【JS点滴】substring和substr以及slice和splice的用法和区别。

    那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”: var a = "get-el ...

  2. (转)substring和substr以及slice和splice的用法和区别

    转载地址:https://www.cnblogs.com/echolun/p/7646025.html 那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个func ...

  3. substr和substring,slice和splice的区别,js字符串截取和数组截取

    本文参考了文章:https://blog.csdn.net/kenberkeley/article/details/50983734 博主已经总结得很好了,看完之后也能明白,不过还是觉得要自己动手敲一 ...

  4. JavaScript 字符串操作:substring, substr, slice

    在 JavaScript 中,对于字符串的操作有 substring, substr, slice 等好多个内置函数,这里给大家推荐一篇介绍 substring, substr, slice 三者区别 ...

  5. JavaScript中,提取子字符串方法:Slice、Substring、Substr的比较。

    在JavaScript中,提取子字符串主要是通过 Slice.Substring.Substr 三个方法之一. // slice // 语法: string.slice(beginSlice [, e ...

  6. javascript字符串截取的substring、substr和slice

    本文详细的介绍了javascript中substring().substr()和slice()三个JS字符串截取的方法,substring()方法用于提取字符串中介于两个指定下标之间的字符.subst ...

  7. js字符串截取函数slice()、substring()、substr()

    摘要 在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与 ...

  8. javascript中substring()、substr()、slice()的区别

    在js字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧. ...

  9. 比较String.substring()、String.slice()、String.substr()的区别

    String.substring().String.slice().String.substr()这三者都能从String字符串中截取一部分,那么它们在使用上有什么不同么? 一.slice() 方法提 ...

随机推荐

  1. 「NOI2015」「Codevs4621」软件包管理器(树链剖分

    4621 [NOI2015]软件包管理器 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond   题目描述 Description Linux用户和OSX用户一定对 ...

  2. MongoDB Oplog

    Capped Collections MongoDB有一种特殊的Collection叫Capped collections,它的插入速度非常快,基本和磁盘的写入速度差不多,并且支持按照插入顺序高效的查 ...

  3. Oracle中CASE WHEN的用法实例

    实例演示: (1)查询表users中的数据. select u.id,u.realname,U.SEX from users u; 查询结果如下 ID    REALNAME SEX 1  10082 ...

  4. Hue离线安装

    参考 https://blog.csdn.net/xuxudede1989/article/details/50359023 http://cloudera.github.io/hue/latest/ ...

  5. (水题)洛谷 - P2439 - 阶梯教室设备利用 - 简单dp

    https://www.luogu.org/fe/problem/P2439 很明显时间是一个维度,按照时间顺序决策就行了. dp[i]表示以时间i为结尾所能达到的最长演讲时间. #include & ...

  6. 新浪微博分享出现libc++abi.dylib: terminating with uncaught exception of type NSException微博微信SDK运行编译报错

    SDK出现libc++abi.dylib: terminating with uncaught exception of type NSException  的问题: 解决方法 结合 # 监测bug( ...

  7. JS鼠标响应事件经过、移动、点击示例介绍

    原文: http://www.jb51.net/article/41124.htm onMouseDown 按下鼠标时触发 onMouseOver 鼠标经过时触发 onMouseUp 按下鼠标松开鼠标 ...

  8. 用spin和edit控件来用spin控制edit里面小数的增减

    1.响应SPIN的消息,就是点SPIN的上键头和下键头的消息,在这个消息里改变值是以0.1步进量增减.2.使用UpdateData(FALSE)来更新EDIT的关联的double型的变量. 创建步骤 ...

  9. WPF 中如何使得DataGrid的Column有鼠标点击相应

    http://stackoverflow.com/questions/5895803/how-do-i-capture-click-events-on-a-datagrid-column-header ...

  10. 2013 Noip提高组 Day1

    3285 转圈游戏 2013年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description ...