如何使用空值Javascript删除二维数组中的索引自定义元素

时间:2017-11-13 07:15:49

标签: javascript arrays multidimensional-array

假设我在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' ] ]

请帮助并谢谢

2 个答案:

答案 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"]]