从多维数组中删除特定的数组元素?

时间:2013-07-11 19:44:10

标签: javascript arrays multidimensional-array

我无法在多维数组中循环并删除特定的元素数组。我的多维数组看起来有点像这样:

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

所以,如果我有数字29.循环通过这个数组并删除第二个元素是29的数组元素的最有效方法是什么?即[“迪克”,“29”]

4 个答案:

答案 0 :(得分:5)

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

.filter使用本机代码循环遍历数组。建造一个新的阵列当然比仅仅从旧的阵列中削减一部分要昂贵得多。

答案 1 :(得分: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' ] ]

答案 2 :(得分: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/

splice删除一行(参数中的1),你可以通过将1替换为2来删除2行.i--减少数组的长度。

答案 3 :(得分:0)

   array_name = [[1,2,3],[],['Hi','hello','world']] 
    let temp = []
    array_name.forEach(element => {
      if (element != '' || `enter condition here`) {
        temp.push(element)
      }
    });
    
    array_name = temp; // array_name = [  [1,2,3], ['Hi','hello','world'] ]