substring和substr,slice和splice
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的更多相关文章
- 【JS点滴】substring和substr以及slice和splice的用法和区别。
那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”: var a = "get-el ...
- (转)substring和substr以及slice和splice的用法和区别
转载地址:https://www.cnblogs.com/echolun/p/7646025.html 那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个func ...
- substr和substring,slice和splice的区别,js字符串截取和数组截取
本文参考了文章:https://blog.csdn.net/kenberkeley/article/details/50983734 博主已经总结得很好了,看完之后也能明白,不过还是觉得要自己动手敲一 ...
- JavaScript 字符串操作:substring, substr, slice
在 JavaScript 中,对于字符串的操作有 substring, substr, slice 等好多个内置函数,这里给大家推荐一篇介绍 substring, substr, slice 三者区别 ...
- JavaScript中,提取子字符串方法:Slice、Substring、Substr的比较。
在JavaScript中,提取子字符串主要是通过 Slice.Substring.Substr 三个方法之一. // slice // 语法: string.slice(beginSlice [, e ...
- javascript字符串截取的substring、substr和slice
本文详细的介绍了javascript中substring().substr()和slice()三个JS字符串截取的方法,substring()方法用于提取字符串中介于两个指定下标之间的字符.subst ...
- js字符串截取函数slice()、substring()、substr()
摘要 在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与 ...
- javascript中substring()、substr()、slice()的区别
在js字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧. ...
- 比较String.substring()、String.slice()、String.substr()的区别
String.substring().String.slice().String.substr()这三者都能从String字符串中截取一部分,那么它们在使用上有什么不同么? 一.slice() 方法提 ...
随机推荐
- [APIO 2015] 雅加达的摩天楼
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4070 [算法] 考虑将每个"Doge"向其所能到达的楼连边 直接 ...
- c++之函数值传递和引用传递解析----关键在于理解函数return的实现机制(内存分配)
函数调用过程解析 func里的a存储在调用fun函数时开辟的栈空间里,这块栈只在调用func时对func可用,调用结束后返回的a,其实是暂存在寄存器里的(一般情况下是eax),而返回到main里时,m ...
- HDU acm1028 整数划分 递归问题(递推)
我们用递归+记忆化的方法来解决普通整数划分问题:定义 f(n,m)为将整数n划分为一系列整数之和,其中加数 最大不超过m. 得到下面的递推关系式: 当n==1 || m==1 只有一种划分,即 1 或 ...
- Manasa and Combinatorics
题意: 给定n,求问由2n个字母B,n个字母A构成的字符串中 任意前缀B的个数大于A的个数且任意后缀B的个数大于A的个数的 字符串个数. 解法: 注意到答案不易于直接计算,所以我们考虑应用容斥原理. ...
- git远程提交到github或者gitee
一.git安装 git官网下载 https://git-scm.com/downloads ,既有Windows的.Linux的以及Macos的. windowds下载安装git的可执行文件,就会有两 ...
- 怎么在Ubuntu下设置程序的快捷键
参考 http://jingyan.baidu.com/article/1e5468f97f9e75484861b773.html 我的系统是 64bit Ubuntu14.04 我设置了 gedit ...
- C - Bear and Five Cards
Description A little bear Limak plays a game. He has five cards. There is one number written on each ...
- Flutter实战视频-移动电商-38.路由_Fluro中Handler编写方法
38.路由_Fluro中Handler编写方法 在main.dart中初始化Fluro 编写handler 在lib下新建routers文件夹,表示里面要很多路由相关的文件 我们声明一个Handler ...
- Appium + junit 的简单实例
import static junit.framework.Assert.assertTrue; import static org.junit.Assert.*; import org.junit. ...
- UGUI实现unity摇杆
http://www.winig.cc/archives/348 好久没有写文章了,最近在做项目是用的unity最新的ui系统UGUI,项目需要做一个摇杆,网上大部分都是用的插件和NGUI做的摇杆,u ...