假设我在javascript中有2维数组,我想在数组中删除类似this []的空元素,例如:
// like this
var newArray = [["test1", "test2"], ["test3", "test4"], []];
// or like this
var newArray= [["test1", "test2"], [], ["test3", "test4"]];
到目前为止和我的代码
var newArray= [["test1", "test2"], ["test3", "test4"], []];
for(var loop = 0; loop < newArray.length; loop++){
if (newArray[loop] === null){
// remove this empty element
newArray[loop].slice();
}
}
console.log(newArray);
到目前为止我的输出
[ [ 'test1', 'test2' ], [ 'test3', 'test4' ], [] ]
如何删除那个空元素?当我打印到控制台时,我想要的结果必须:
[ [ 'test1', 'test2' ], [ 'test3', 'test4' ] ]
请帮助并谢谢
答案 0 :(得分:3)
尝试
array = array.filter(a => a && a.length !== 0);
filter
是JavaScript提供的标准数组函数之一。它是一个高阶函数,它接受一个谓词函数,它应用于数组中的每个元素。在这种情况下,我们有一个数组数组,因此a
是一个数组。
答案 1 :(得分:2)
您还可以使用更基本的 splice
方法删除数组元素,而不会留下空值或空值。
您可以将此代码用作:
var newArray = [["test1", "test2"], ["test3", "test4"], []];
for(var loop = 0; loop < newArray.length; loop++){
var tempArray = newArray[loop];
// safely check if empty value is actually an array or not, if array then only use length property so it doesn't get undefined
if (Array.isArray(tempArray) && (tempArray.length == 0)) {
newArray.splice(loop, 1);
--loop; // decrease the loop value by 1 because original array has its length decreased by 1
}
}
console.log(newArray);
// [["test1","test2"],["test3","test4"]]