2013-07-11 4 views
0

다차원 배열을 순환하고 특정 요소 배열을 삭제하는 데 문제가 있습니다. 나는 수가이 배열을주기에 가장 효율적인 방법 무엇입니까 (29)이 있고 두 번째 요소는 29이다의 배열 요소를 삭제하면 그래서다차원 배열에서 특정 배열 요소를 삭제 하시겠습니까?

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

: 내 다차원 배열은 다음과 같이 조금 보이는? 즉, [ "Dick", "29"]

+0

['for' 루프] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for). 데이터로 무엇을하고 있는지에 따라 먼저 배열을 정렬 할 수 있습니다. –

+0

indexOf와 splice의 조합이 될 것이라고 생각했습니다. – 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의 대답은 배열 요소의 내용을 삭제하지만 삭제하지는 않습니다. 여기에 주위 방법 : 접합부는 (인자에서 1) 하나 개의 행을 제거

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 (2)에 의해 대체하여 2 개 행을 제거 할 배열의.

관련 문제