我的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/