2013-07-11 252 views
0

我無法循環通過多維數組並刪除特定的元素數組。我的多維數組看起來像這樣一點:從多維數組中刪除特定的數組元素?

myArray = [["Tom", "161"], ["Dick", "29"], ["Harry", "46"]]; 

所以,如果我有29號通過什麼這個數組是最有效的方式來循環並刪除誰的第二個元素是29數組元素?即[「Dick」,「29」]

+0

A ['for' loop](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for)。根據您對數據的其他操作,您可以先對數組進行排序。 –

+0

我認爲這將是indexOf和拼接的一些組合? – AzzyDude

+0

'indexOf'不會真正起作用,因爲您正在尋找元素內的元素。但是您可以使用http://jsperf.com/輕鬆測試更快的速度。 –

回答

3
var myArray = [["Tom", "161"], ["Dick", "29"], ["Harry", "46"]]; 
var myNewArray = myArray.filter(function(item){ return item[1] != 29 }) 

.filter使用本地代碼來遍歷數組。建立一個新的陣列當然可能比僅僅從舊的陣列中切出一部分更昂貴,以便進行測試。

+0

這很有效,但是你認爲製作一個新的數組比上述的循環和拼接方法效率低? – AzzyDude

+2

這種方法比我的速度更快... http://jsperf.com/removearrfrommulti – brbcoding

+0

哦,太好了,謝謝你的信息。 Upvote爲你:) – AzzyDude

2
myArray = [["Tom", "161"], ["Dick", "29"], ["Harry", "46"]]; 
for(var i = 0; i <= myArray.length - 1; i++){ 
    if(myArray[i][1] == "29"){ 
     myArray[i].splice(0,2); 
    } 
} 
console.log(myArray); 

// returns [ [ 'Tom', '161' ], [], [ 'Harry', '46' ] ] 
0

brbcoding的回答刪除數組元素的內容但不刪除它。這裏是圍繞一個辦法:

myArray = [["Tom", "161"], ["Dick", "29"], ["Harry", "46"]]; 
document.getElementById("a").innerHTML = myArray; 
for(var i = 0; i <= myArray.length - 1; i++){ 
    if(myArray[i][1] == "29"){ 
     myArray.splice(i--,1); 
} 
} 
document.getElementById("b").innerHTML = myArray; 
console.log(myArray); 

https://jsfiddle.net/tmzshopping/dfdveazk/

剪接移除(在參數中1)一個行,就可以通過更換1通過2.我 - 減小了長度除去2行的陣列。