7

我想知道将(从 Python)列表理解转换为 Javascript 的最简洁的方法是什么。有什么可以使这个可读而不是一团糟吗?

    non_zero_in_square = [ grid[row][col]
                           for row in range(start_row, start_row+3)
                           for col in range(start_col, start_col+3)
                           if grid[row][col] is not 0
                         ]

这是列表推导的一个很好的例子,因为它有多个fors 和 和一个if

我应该补充一点,这里range已经涵盖了这一点(我不能没有)。range

4

3 回答 3

3

好吧,使用该方法执行此操作会有些混乱.map(),因为外部调用确实需要返回数组。因此,您可能最适合行人:

var nonZero = [];
for (var row = startRow; row < startRow + 3; ++row)
  for (var col = startCol; col < startCol + 3; ++col)
    if (grid[row][col] !== 0) nonZero.push(grid[row][col];
于 2012-07-13T23:10:32.557 回答
2

Coffee 脚本支持列表理解语法,并且可能是最简洁的,因为它完全遵循语法。不幸的是,它是一个中介,会被编译成多行 javascript

http://coffeescript.org/#loops

他们向您展示了它是如何转换为普通 javascript 的。

于 2012-07-13T23:09:33.537 回答
0

Mozilla JS 文档,ES 1.7 原生支持它们

例子:

var numbers = [1, 2, 3, 4];
var doubled = [i * 2 for (i of numbers)];
于 2013-11-22T16:34:11.440 回答