已经写了一年多的js,用了无数次字符串分割,嗯!但是还是傻傻分不清splice、slice和split,每次都要搜。。。。这两天又碰上了,但是我决定不再逃避了!来!总!结!
一、给谁用 ?
- splice()
即Array.prototype.splice()。是数组对象的方法。 - slice()
有String.prototype.slice()和Array.prototype.slice()。因此字符串和数组都可以使用。 - split()
即String.prototype.split()。是字符串方法。
二、怎么用?
1.splice(start,deleteCount,item),共3个参数。
- start指定修改开始的位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位;如果负数的绝对值大于数组的长度,则表示开始位置为第0位。
- deleteCount(可选参数) 整数,表示要移除的数组元素的个数。为0或者负数时应至少添加一个新元素。
- item(可选参数) 要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb'); // inserts at index 1
console.log(months);//output: Array ["Jan", "Feb", "March", "April", "June"]
- slice()
str.slice(beginIndex, endIndex)------从beginIndex索引(以 0 为基数)处开始提取原字符串中的字符;在endIndex(可选)索引(以 0 为基数)处结束提取字符串。
arr.slice(begin, end)------提取begin(可选)的索引(从 0 开始),从该索引开始提取原数组元素;提end(可选)的索引(从 0 开始),在该索引处结束提取原数组元素。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, 4));
// expected output: Array ["camel", "duck"]
console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]
- split()
str.split(separator, limit)------separator分隔符;limit 整数,限定返回的分割片段数量。
三、用了会怎样?
- splice()
使用splice后会返回由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包 含一个元素的数组。如果没有删除元素,则返回空数组。需要注意的是splice()会修改原数组。
let arr = [1,2,3,4,5]
//undefined
arr.splice(1,1)
//[2]
arr
//[1, 3, 4, 5]
- slice()
str.slice()返回一个从原字符串中提取出来的新字符串,且不会改变原字符串。
arr.slice()返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。 - split()
返回源字符串以分隔符出现位置分隔而成的一个 Array 。