字符串的切分和组合
-
切分
substring & substr & slice 截取字符串不改变原字符串
str.substr(start[, length]) 获取字符串str从start开始长度为length的子字符串;❗️已不建议使用
str.substring(indexStart[, indexEnd]) 获取字符串str从indexStart到indexEnd的子字符串;
str.slice(indexStart[, indexEnd]) 从字符串str中提取indexStart到indexEnd的子字符串并返回一个新字符串;
`substr`
如果 start 为负值,被认为是 length+start;
如果 start > length ,则返回空字符串;
如果 length 为空,则截取长度为 start 到结尾;
如果 length <= 0,则返回空字符串;
`substring` & 'slice'
同: 开区间,不包含索引为indexEnd的那个字符;
如果省略 indexEnd,提取字符到字符串末尾;
如果 indexStart 等于 indexEnd,返回一个空字符串;
如果任一参数为 NaN,则认定为0;
如果任一参数大于 length,则被当作 length;
异: 如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样;slice则返回空字符串;
如果任一参数小于 0 ,substring 当作 0;slice计算为 length+(-i);
split 分割字符串不影响原字符串
str.split([separator[, limit]]) 以separator为分隔符分割字符串并返回一个子字符串组成的数组,limit限制的是子字符串的数量,separator可以为字符串或正则表达式。
如果有两个分隔符紧挨着就会增加一个空字符串作为子字符串。
charAt & charCodeAt 获取字符串索引处的值
str.charAt(index) 返回字符串str的index处的字符,如果index为空则返回
str.charAt(0),如果 index >= length 则返回空字符串
str.charCodeAt 返回相应索引值处字符的Unicode码点
-
组合
concat 不影响原字符串
str.concat(str2, [, ...strN]) 将str2...strN拼接到str后形成一个新的字符串返回
相较于字符串直接相加,如果参数为其他类型,concat可以自动将参数转化为字符串进行拼接
数组的切分和组合
切分
slice
arr.slice([begin[, end]]) 提取 [begin,end) 的子数组。不会修改原数组,返回一个浅拷贝原数组中元素的一个新数组,基本规则和字符串slice一致
splice
array.splice(start[, deleteCount[, item1[, item2[, ...]]]] )
从start开始删除deleteCount个元素,并在此处添加item1,item2...
- 如果 `start` 超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组倒数位开始;如果负数的绝对值大于数组的长度,则表示开始位置为第0位。
- 如果 `deleteCount` 被省略了,或者它的值大于等于`array.length - start`(也就是说,如果它大于或者等于`start`之后的所有元素的数量),那么`start`之后数组的所有元素都会被删除。
- 如果 `deleteCount` 是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。
组合
join
arr.join([separator]) 以分隔符separator连接数组元素并返回成字符串
如果缺省,则默认为','作为分割符
concat
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]]) 合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
如果省略了所有 `valueN` 参数,则 `concat` 会返回调用此方法的现存数组的一个浅拷贝。
扩展运算符
和concat一样,不改变原数组的浅拷贝。
扩展运算符相关可以参考 segmentfault.com/a/119000002…