2013-12-12 25 views
1

我有数组的数组在JS根据2D阵列innerarray的值中去除outerarray的元件

例如 阵列[ 阵列[ '1', '2', '3', '0'] , 阵列[ '2', '3', '4', '1'], 阵列[ '3', '4', '5', '0'], ]

的innerarray具有许多元素和其中一个元素被设置为其删除的值'1'被删除或'0'被删除。

在上面的数组中,它将是innerarray的元素3,因此将outerarray的中间元素设置为删除。

通过ajax调用更新mysql数据库之后,我想从outerarray中删除在innerarray中设置为删除的所有元素。

如何根据innerarray中元素的值从outerarray中删除?

我已经尝试了for循环,但似乎并不奏效

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

感谢您的帮助 –