本文主要是介绍【JavaScript】 splice slice,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
splice
splice有3个参数,它可以用来替换/删除/添加数组内某一个或者几个值
* 注意:该方法会改变原始数组。
arrayObject. splice (index , len , [item])
- index:数组开始下标
- len: 替换/删除的长度
- item:替换的值,删除操作的话 item为空
- 返回值:包含被删除项的新数组(如果有的话)
如:arr = [‘a’,’b’,’c’,’d’]
1. 删除 —— item不设置
arr.splice(1,1)
//[‘a’,’c’,’d’]
删除起始下标为1,长度为1的一个值。(len设置的1,如果为0,则数组不变)
arr.splice(1,2)
//[‘a’,’d’]
删除起始下标为1,长度为2的一个值
2. 替换 —— item为替换的值
arr.splice(1,1,'ttt')
//[‘a’,’ttt’,’c’,’d’]
替换起始下标为1,长度为1的一个值为‘ttt’
arr.splice(1,2,'ttt')
//[‘a’,’ttt’,’d’]
替换起始下标为1,长度为2的两个值为‘ttt’
3.添加 —— len设置为0,item为添加的值
arr.splice(1,0,'ttt')
//[‘a’,’ttt’,’b’,’c’,’d’]
表示在下标为1处添加一项‘ttt’
❤JS能力测评经典题(牛客网)
【移除数组中的元素】
移除数组 arr 中的所有值与 item 相等的元素,请直接在给定的 arr 数组上进行操作
输入例子:
removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)
输出例子:
[1, 3, 4]
function removeWithoutCopy(arr, item) {for(var i=0;i<arr.length;i++){if(arr[i]==item){ //splice方法,给其传递两个参数,第一个参数表示起始位置,第二个参数表示删除元素的个数arr.splice(i,1);//需要注意的是,splice方法会改变数组长度,当减掉一个元素后,后面的元素都会前移,因此需要相应减少i的值i--;}}return arr;
}
题目要求在原数组上面直接修改,删除数组元素,可以用splice方法,给其传递两个参数,第一个参数表示起始位置,第二个参数表示删除元素的个数。因此,循环遍历数组arr,如果arr[i] == item,就将i作为第一个参数,1作为第二个参数(只删除一个元素)传给splice方法。需要注意的是,splice方法会改变数组的长度,因此在每次删除之后,都需要执行i- -以确保数组长度正确。
slice
定义:可从已有的数组中返回选定的元素。
*注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
arrayObject. slice( start, end)
- start 必需:规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
- end 可选:规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
- 返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
❤JS能力测评经典题(牛客网)
【添加元素】
在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
输入例子:
append([1, 2, 3, 4], 10)
输出例子:
[1, 2, 3, 4, 10]
法①
function append(arr, item) {//复制数组var arr2 = arr.slice(0);arr2.push(item); return arr2;
}
法②
function append(arr, item) {return arr.concat([item]);
}
使用slice()复制数组arr赋值给arr2,用push()添加元素item,但注意push()方法修改原数组,它返回的是新的数组的长度,所以例子中return arr2.push(item);返回的是5;
使用concat() 方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
这篇关于【JavaScript】 splice slice的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!