JavaScript中 join()、split()、slice()函数的用法及区别
在刷力扣时,这几个函数在字符串数组问题处理时经常会用到,但总容易搞混,现将它们总结下,方便下次查看
一:Array.prototype.join()
join()方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串,用逗号或指定的分隔符字符串分隔。如果数组只有一个元素,那么将返回该元素而不使用分隔符。
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join());
// Expected output: "Fire,Air,Water"
console.log(elements.join(''));
// Expected output: "FireAirWater"
console.log(elements.join('-'));
// Expected output: "Fire-Air-Water"
- 函数中的参数如果省略,数组元素用逗号(
,
)分隔。如果是空字符串(""
),则所有元素之间都没有任何字符 - 如果一个元素是 undefined
或 null
,它将被转换为空字符串
二:String.prototype.split()
split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。
const str = 'The quick brown fox jumps over the lazy dog.';
const words = str.split(' ');
console.log(words[3]);
// Expected output: "fox"
const chars = str.split('');
console.log(chars[8]);
// Expected output: "k"
const strCopy = str.split();
console.log(strCopy);
// Expected output: Array ["The quick brown fox jumps over the lazy dog."]
- 如果在 str 中省略分隔符,则返回的数组包含一个由整个字符串组成的元素
- 如果分隔符为空字符串,则将 str 原字符串中每个字符的数组形式返回
注意:如果使用空字符串 (“) 作为分隔符,则字符串不是在每个用户感知的字符 (图形素集群) 之间,也不是在每个 Unicode 字符 (代码点) 之间,而是在每个 UTF-16 代码单元之间。这会摧毁代理对。
三:Array/String.prototype.slice()
slice()方法数组和字符串均有,使用方法大同小异,下面就以数组为例介绍
slice()方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2));
// Expected output: Array ["camel", "duck", "elephant"]
console.log(animals.slice(-2));
// Expected output: Array ["duck", "elephant"]
console.log(animals.slice(2, 4));
// Expected output: Array ["camel", "duck"]
console.log(animals.slice(2, -1));
// Expected output: Array ["camel", "duck"]
console.log(animals.slice());
// Expected output: Array ["ant", "bison", "camel", "duck", "elephant"]