我无法在多维数组中循环并删除特定的元素数组。我的多维数组看起来有点像这样:
myArray = [["Tom", "161"], ["Dick", "29"], ["Harry", "46"]];
所以,如果我有数字29.循环通过这个数组并删除第二个元素是29的数组元素的最有效方法是什么?即[“迪克”,“29”]
答案 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'] ]