substring和substr,slice和splice傻傻分不清楚?进来!,substrsplice
分享于 点击 23853 次 点评:74
substring和substr,slice和splice傻傻分不清楚?进来!,substrsplice
先说说 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 显然就是返回副本
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
均能接受负数。
相关文章
- 暂无相关文章
用户点评