Multidimensional array 如何过滤嵌套数组以返回特定数组

Multidimensional array 如何过滤嵌套数组以返回特定数组,multidimensional-array,underscore.js,Multidimensional Array,Underscore.js,我试图用纯Javascript过滤嵌套数组。我知道我可以展平我的数组数组,使之更容易,但练习的重点是看看下划线js函数是如何工作的。我无法使数组数组仅包含拥有我的游戏件的对象。当我运行代码时,我得到以下结果: Array[8], Array[8], Array[8], Array[8]] 它应该在每个数组中只返回4项。这是我的密码 var results = _.filter(gameBoard, function(row, index) { if (row[index].gamePie

我试图用纯Javascript过滤嵌套数组。我知道我可以展平我的数组数组,使之更容易,但练习的重点是看看下划线js函数是如何工作的。我无法使数组数组仅包含拥有我的游戏件的对象。当我运行代码时,我得到以下结果:

Array[8], Array[8], Array[8], Array[8]]
它应该在每个数组中只返回4项。这是我的密码

var results = _.filter(gameBoard, function(row, index) {
   if (row[index].gamePiece !== "") {
      return row[index];
    }
})
console.log(results);

我认为您要查找的是顶级数组上的
.map
,以及每个子数组上的
.filter

var results = _.map(gameBoard, function(row) {
  return _.filter(row, function(cell) {
    return cell.gamePiece !== '';
  });
});

这将返回一个列表列表,其中每个列表中的所有空游戏块都已删除。

哇,谢谢!成功了。我认为u.filter也会像u.map一样遍历数组。为什么还需要使用地图?我真的很喜欢空的游戏碎片被移除的方式。过滤器可以移除元素,但不能修改它们。相反,map可以修改元素(即返回修改过的副本),但不能删除它们。您的问题基本上是使用与原始数组相同的元素创建一个新数组,但是每个元素都经过了修改,以便删除缺失的片段(map)。对于每个子数组,过滤器都会清除空数组。