2013-11-01 153 views
0

arr1是一個整數數組。 arr2包含我希望從arr1中刪除的元素的索引列表。按索引刪除數組元素

所以這個我JS功能:

function deletion() 
{ 
     var arr3=[]; 
     var arr1= [2,3,4,5,6,7,8,11,22]; 
     console.log(arr1); 
     var arr2 = [4,0,1]; 

     for(var i=0;i<arr2.length;i++) 
    { 
    arr3.push(arr1[arr2[i]]); 
    } 
    for(var j=0;j<arr3.length;j++) 
    { 
    arr1.splice(arr1.indexOf(arr3[j]),1); 
    } 
     console.log(arr1,"array1"); 
} 

也能正常工作,但現在的要求是:我需要用更有效的方式。 不應該使用arr3,即我不想使用另一個新數組,並將元素推入其中,然後循環遍歷它。我希望在不使用新數組的情況下實現這一點。

是否有一種方法可以實現這個目標?並且不應該使用任何庫,這必須通過Java Script來完成。

道歉,如果問題是荒謬的.. 這是我必須完成的任務。

+0

做你有嘗試,任何結果/編碼? –

+1

如果你只是想避免使用第三個數組,然後按降序排列'arr2',然後直接拼接'arr1'。 –

+0

謝謝..我會嘗試 –

回答

0

您可以使用Array.splice這種效果,它可能無法在這種形式適合由於雙迴路複雜,但你的想法...

var arr1= [2,1,3,4,5,6,7,8,11,22], 
    arr2 = [4,0,1]; 

for (var i in arr1) { 
    for (var j in arr2) { 
     if (arr1[i] == arr2[j]) 
      arr1.splice(i, 1); 
    } 
} 
1
var arr1= [2,3,4,5,6,7,8,11,22]; 
var arr2 = [4,0,1]; 
arr2 = arr2.sort().reverse(); 
for(var i = 0; i < arr2.length; i++){ 
    arr1.splice(arr2[i],1); 
} 
console.log(arr1); 
1
function deletion() 
{ 
    var arr1= [2,3,4,5,6,7,8,11,22]; 
    console.log(arr1); 
    var arr2 = [4,0,1]; 
    arr2 .sort(function(a,b){return a>b?-1:1}); 
    for(var i=0;i<arr2.length;i++) 
    { 
     arr1.splice(arr2[i],1); 
    } 
    console.log(arr1,"array1"); 
}