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]

 

參考文獻:

https://blog.csdn.net/xiaoqingpang/article/details/79108005
https://blog.csdn.net/qq_31325079/article/details/85758276

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM