JS删除数组元素
删除数组中连续的元素时,可以使用slice或者splice方法,splice时需要注意会修改原数组。
1.slice(start,end):方法可从已有数组中返回选定的元素,返回一个新数组,包含从start到end(不包含该元素)的数组元素。(不改变原数组)
- start参数:如果不指定,那么从0开始。如果为负数,规定从数组尾部算起的位置,-1是指最后一个元素。
- end参数:如果不指定,那么切分的数组包含从start到数组结束的所有元素。如果为负数,规定从数组尾部算起的位置,-1是指最后一个元素。
var arr = [1,2,3,4,5];
console.log(arr.slice(1,-1));//[2,3,4]
console.log(arr);//[1,2,3,4,5]2.splice(index,howmany,item1,...itemX):该方法向或者从数组中添加或者删除项目,返回被删除的元素。(会改变原数组)
- index参数:规定添加或者删除的位置。如果不指定,那么从0开始。如果为负数,规定从数组尾部算起的位置,-1是指最后一个元素。
- howmany参数:要删除的数量,不指定时,删除index后的所有元素。如果为0,则不删除项目。
- tem1,...itemX参数:可选,向数组添加的新元素。
var arr = [1,2,3,4,5];
console.log(arr.splice(2,2,"hello"));//[3,4]
console.log(arr);//[1, 2, "hello", 5] 改变了原数组
删除数组中不连续的元素时,可以自己写函数实现:
1:filter
function remove(arr, item) {
return arr.filter(function(cur,index,src){
if($.isArray(item)){
if($.inArray(cur, item) != -1){
return false
}
}else{
if(cur === item){
return false
}
}
return true
})
}
var arr = [1,2,3,4,5];
console.log(remove(arr,[1,2]));//[3,4,5]
console.log(arr);//[1,2,3,4,5]2:push
function remove(arr, item) {
var tempArr = [];
$.each(arr, function(i,cur){
if($.isArray(item)){
if($.inArray(cur, item) == -1){
tempArr.push(cur)
}
}else{
if(cur != item){
tempArr.push(cur)
}
}
})
return tempArr
}
var arr = [1,2,3,4,5];
console.log(remove(arr,[1,2]));//[3,4,5]
console.log(arr);//[1,2,3,4,5]3:splice
function remove(arr, item) {
var newarr = arr.slice(0);
for(var i=0;i<newarr.length;i++){
if($.isArray(item)){
if($.inArray(newarr[i], item) != -1){
newarr.splice(i,1);
i--;
}
}else{
if(newarr[i] == item){
newarr.splice(i,1);
i--;
}
}
}
return newarr;
}
var arr = [1,2,3,4,5];
console.log(remove(arr,[1,2]));//[3,4,5]
console.log(arr);//[1,2,3,4,5]本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!