携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情
slice()
提取数组中指定的内容,并将其以新数组的形式返回,因而需要传递参数(数组元素索引值,左闭右开),如:
var array = ['北京', '天津', '上海', '广东', '深圳', '成都'];
var newarray = array.slice(0, 3);
console.log(JSON.stringify(newarray));//["北京","天津","上海"]
console.log(JSON.stringify(array));//["北京","天津","上海","广东","深圳","成都"]
通过console.log(JSON.stringify(array))我们可以看到原数组并没有发生改变,该方法只是复制了其中一段内容并将其以数组形式返回。
注意:括号内传递的参数并非只有以上一种,我们在之前讲过slice的参数非常灵活,如下图,这里不再过多赘述。
splice()
这个方法和slice()方法容易搞混,在传递参数的时候,splice括号里面第一个参数为数组元素索引值,第二个参数为删除数组元素的个数,返回值为以被删除的元素组成的新数组,如:
var array = ['北京', '天津', '上海', '广东', '深圳', '成都'];
var deletarray = array.splice(0, 3);
console.log(JSON.stringify(deletarray));//["北京","天津","上海"]
console.log(JSON.stringify(array));//["广东","深圳","成都"]
除了上面的用法以外,splice还有一个用法,就是替换其中的数组元素,因此,传递的参数相对来说比较多,如:
var array = ['北京', '天津', '上海', '广东', '深圳', '成都'];
var deletarray = array.splice(0, 3, '武汉', '香港', '澳门');
console.log(JSON.stringify(array));//["武汉","香港","澳门","广东","深圳","成都"]
解释:第一个参数为替换开始的数组元素的索引值,第二个参数是替换的个数,后面的参数则是指定的替换的元素。
但是,如果我们在开发中遇到数组元素很多的数组,这时候想要删除其中某个元素,我们不可能去挨个数他的索引,所以这时候我们可以用indexOf的方法来获取该元素的索引,进而删除,如:
var array = ['北京', '天津', '上海', '广东', '深圳', '成都'];
var num = array.indexOf('广东');
var delarray = array.splice(num, 1);
console.log(JSON.stringify(delarray));//["广东"]
console.log(JSON.stringify(array));//["北京","天津","上海","深圳","成都"]