使用 underscore.js 删除带有空字符串的嵌套数组

Removing nested array with empty strings with underscore.js

我有一个数组。一些数组只包含一个空字符串。我想从父数组中删除所有这些。

之前

[[ '*Order Number','*Line Number','*Item Number'],
[ '' ],
[ '018622','2','had-99']]

之后

[[ '*Order Number','*Line Number','*Item Number'],
[ '018622','2','had-99']]

您可以使用内置的 Array#filter

var array = [[ '*Order Number','*Line Number','*Item Number'], [''], [ '018622','2','had-99']];

console.log(array.filter(function (a) { return a.toString(); }));

改变原始数组的版本。

var array = [[ '*Order Number','*Line Number','*Item Number'], [''], [ '018622','2','had-99']],
    i = array.length;

while (i--) {
    array[i].toString() || array.splice(i, 1);
}

console.log(array);

我可能会检查数组的长度是否只有 1 以及该项目是否为空字符串

var list = [[ '*Order Number','*Line Number','*Item Number'], [''], [ '018622','2','had-99']];

list.filter(function(arr){
  if(arr.length === 1 && arr[0] === '') {
    return false;
  }
  return true;
}}

更好的方法是使用 Array#splice,它会从父数组中删除指定的元素。

var arr = [[ '*Order Number','*Line Number','*Item Number'], [''], [ '018622','2','had-99']];

for (var i = 0; i < arr.length; i++) {
  if (arr[i][0] == '' && arr[i].length == 1) {
    arr.splice(i, 1);
    --i;
  }
}

console.log(arr);