2013-12-12 3 views
1

I는 JS에서 배열의 배열을2D 배열 innerarray의 값에 따라 outerarray의 요소를 제거

예 배열 [ 배열 [ '1', '2', '3', '0'] , 배열 [ '2', '3', '4', '1', 배열 [ '3', '4', '5', '0'은, ]

는 innerarray을 갖는다 많은 요소와 요소 중 하나는 삭제 된 값으로 '1'또는 삭제되지 않은 것으로 '0'으로 설정됩니다.

위의 배열에서 innerarray의 요소 3이되므로 outerarray의 중간 요소는 삭제되도록 설정됩니다.

ajax 호출을 통해 mysql db를 업데이트 한 후 innerarray에서 삭제 된 것으로 설정된 모든 요소를 ​​outerarray에서 제거하려고합니다.

innerarray의 요소 값에 따라 outerarray에서 어떻게 제거합니까?

나는 루프를 시도했지만 나던

for(var i=0;i<outerarry.length;i++){ 
     if(outerarray[i][3]=='1'){ 
     outerarray.splice(i,1); 
     } 
    } 

어떤 아이디어를 작동하는 것?

답변

1

배열이 각 스플 라이스로 다시 색인화되지 않도록 역순으로 배열을 반복합니다.

var arr = [['1','2','3','0'],['2','3','4','1'],['3','4','5','0'],['4','4','5','1'],['5','4','5','0'],['6','4','5','1'],['7','4','5','0']]; 

var arrLength = arr.length; 
while(arrLength--){ 
    if(arr[arrLength][3] == 1){ 
     arr.splice(arrLength,1); 
    } 
} 
console.log(arr); 

JS 바이올린 :http://jsfiddle.net/L5T9k/

+0

@BarryWatts는 마지막 두 개 이상의 요소가 제거되고 함께 잘 작동하지 않을 것입니다, 내 업데이트 된 솔루션을 참조하십시오. 배열이 다시 색인화되기 때문입니다. –

+0

도움 주셔서 감사합니다. –