@TOC
易混-slice()、splice()、split()、substring()基础使用与区分
1.JavaScript 内置对象 Array中Array.prototype.slice()
slice-薄片
slice()
方法返回一个新的数组对象,这一对象是一个由 begin
和 end
决定的原数组的浅拷贝(包括 begin
,不包括end
)。原始数组不会被改变。
const cities = ['beijing','changsha', 'shenzhen', 'harbin', 'guangzhou', 'wuhan'];
console.log(cities.slice(1));
// expected output: Array ["changsha","shenzhen", "harbin", "guangzhou", "wuhan"]
console.log(cities.slice(2, 5));
// expected output: Array ["shenzhen", "harbin", "guangzhou"]
console.log(cities.slice(1, 5));
// expected output: Array ["changsha","shenzhen", "harbin", "guangzhou"]
2.JavaScript 内置对象 Array中Array.prototype.splice()
splice-拼接
splice()
方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
据MDN个人理解修改
array.splice(start[, deleteCount[, item1[, item2[, …]]]])
start(必选)
指定修改的开始位置(从0计数)。
1.如超出数组长度,从数组末尾添加;负值则倒数插入。
2.如负数的绝对值大于数组的长度,则表示开始位置为第0位。
deleteCount (可选)-整数,表示要移除的数组元素的个数。
1.deleteCount 大于 start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。
2.deleteCount 被省略了,或者它的值大于等于array.length - start(也就是说,如果它大于或者等于start之后的所有元素的数量),那么start之后数组的所有元素都会被删除。
3.deleteCount 是 0 或者负数,则不移除元素。
item1, item2, … (可选)
待添加进数组的元素,从start 位置开始。如不指定,则 splice() 将只删除数组元素。
const cities = ['beijing','changsha', 'shenzhen', 'harbin', 'guangzhou', 'wuhan'];
cities.splice(1,0,'chengdu');
console.log(cities);
// expected output: Array ["beijing", "chengdu","changsha","shenzhen", "harbin", "guangzhou", "wuhan"]
//此处注意从是新数组开始splice
cities.splice(4, 1, 'shanghai');
console.log(cities);
// expected output: Array ["beijing", "chengdu","changsha","shenzhen", "shanghai", "guangzhou", "wuhan"]
cities.splice(0, 2);
console.log(cities);
// expected output: Array ["changsha","shenzhen", "shanghai", "guangzhou", "wuhan"]
cities.splice(2);
console.log(cities);
// expected output: Array ["changsha", "shenzhen"]
cities.splice(2, -100, "harbin");
console.log(cities);
// expected output: Array ["changsha", "shenzhen", "harbin"]
3.JavaScript 内置对象 String中 String.prototype.split()
split-分裂
split()
方法使用指定的分隔符字符串将一个String
对象分割成子字符串数组
,以一个指定的分割字串来决定每个拆分的位置。
const str = 'Hope the world epidemic will end soon.';
const words = str.split(' ');
console.log(words[0]);
console.log(words);
console.log(words[6]);
// expected output: "Hope"
// expected output: ["Hope", "the", "world", "epidemic", "will", "end", "soon."]
// expected output: "soon." 有.
const chars = str.split('');
console.log(chars[8]);
console.log(chars[5]);
console.log(chars);
// expected output: ""
// expected output: "t"
// expected output: ["H", "o", "p", "e", " ", "t", "h", "e", " ", "w", "o", "r", "l", "d", " ", "e", "p", "i", "d", "e", "m", "i", "c", " ", "w", "i", "l", "l", " ", "e", "n", "d", " ", "s", "o", "o", "n", "."]
const strCopy = str.split();
console.log(strCopy);
console.log(strCopy[0]);
// expected output: ["Hope the world epidemic will end soon."]
// expected output: Hope the world epidemic will end soon.
4.JavaScript 内置对象 String中 String.prototype.substring()
substring-子串
substring()
方法返回一个字符串在开始索引到结束索引之间的一个子集。
MDN:
str.substring(indexStart[, indexEnd])
indexStart
截取第一个字符的索引,该索引位置的字符作为返回的字符串的首字母。
indexEnd(可选)
一个 0 到字符串长度之间的整数,以该数字为索引的字符不包含在截取的字符串内。
var anyString = "zairesinatra";
// 输出 "zaire"
console.log(anyString.substring(0,5));
console.log(anyString.substring(5,0));//如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样。
console.log(anyString.substring(5,-6));//如果任一参数小于 0 或为 NaN,则被当作 0。
console.log(anyString.substring(5,NaN));//如果任一参数小于 0 或为 NaN,则被当作 0。
console.log(anyString.substring(-4,5));
console.log(anyString.substring(NaN,5));
// 输出 ""
console.log(anyString.substring(6,6));//如果 indexStart 等于 indexEnd,substring 返回一个空字符串。
String.prototype | Array.prototype |
---|---|
split | slice |
substring | splice |
5.JavaScript 内置对象 Array中 Array.prototype.join()
join()
方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。
const elements = ['oh', 'my', 'god'];
//区分一下细节join()\join('')
console.log(elements.join());
// expected output: "oh,my,god"
console.log(elements.join(''));
// expected output: "ohmygod"
console.log(elements.join('-'));
// expected output: "oh-my-god"