我的Web应用程序采用任意大的2D数组,有时看起来像这样:

var multiArray = [["","","",""],[1,2,3],["hello","dog","cat"],["","","",""]];


我想写一个函数来取出完全由引号组成的multiArray内部的每个数组。换句话说,任何看起来像这样的数组:

["","","",""]


应该从multiArray中删除。

我尝试编写以下函数,但是在for循环中使用splice的问题在于,拼接会改变数组的长度,最终我尝试访问未定义的元素。请帮忙!

谢谢!

这是我写的错误函数:

function cleanWhitespace(arrayOfArrays) {
    var i;
    var arrayOfArraysLength = arrayOfArrays.length;
    for (i = 0; i < arrayOfArraysLength; i++) {
        var cleanedArray = $.grep(arrayOfArrays[i], function(element) {
                                return element != ""
                            });
        if (cleanedArray.length == 0)  {
            arrayOfArrays.splice(i, 1);
        }
    }
    return arrayOfArrays;
};

最佳答案

您可以使用$.grep

multiArray = $.grep(multiArray, function(v){
    return v.join('');
});


小提琴:http://jsfiddle.net/scZcB/

10-06 07:43