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
                         ]

複数forの and と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 Scriptはリスト内包表記をサポートしており、構文に正確に従うため、おそらく最も適切です。残念ながら、これは仲介者であり、複数行のjavascriptにコンパイルされます。

http://coffeescript.org/#loops

彼らはそれがバニラジャバスクリプトにどのように隠れているかをあなたに示します。

于 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 に答える