2016-10-16 10 views

答えて

1
var result = [ [ -21, 0 ], [ 22, 0 ], [ -1, 0 ], [ -5, -18 ] ] 
for (var i=0;i < result.length;i++) { 
     for (var k=0;k < result[i].length;k++) { 
      if (result[i][k] < 0) { 
      result[i][k] = 0 
      } 
     } 
    } 
console.log(result); 
0

のように私の出力はArtemKhの答えは動作するはずですしたいです。 しかし、これを追加するには、最初のforループで "result"と呼ばれる配列の各要素を調べ、次に、サブ配列の各要素を調べます。あなたは数が負であるかどうかを確認し、ある場合、あなたはそれが目的を学ぶための0

0

に値だ設定されます場合には、以下のように、より機能的なスタイルを使用して、別の解決策は次のようになります。

var arr = [ 
 
    [-21, 0], 
 
    [22, 0], 
 
    [-1, 0], 
 
    [-5, -18] 
 
    ], 
 
    result = arr.map(subArr => subArr.map(el => el < 0 ? 0 : el)); 
 
console.log(result);
JSで

Arraysreduceまたはmapのような便利な機能が付属しています。この関数は、配列の各要素に対して同期的に実行されるコールバックとして他の関数を使用します。

あなたの問題は、配列のすべての要素(順番に別の配列です)がその要素をゼロに「変換」するためにマップされている別の配列に "変換"(またはマッピング)できます。否定的です。

希望します。

0

Array.prototype.mapをネストして、リスト内の各項目を反復処理することができます。 mapは、返された値から新しい配列を作成した配列を反復処理します。

最後の繰り返しで、xの値が0より小さいかどうかを調べています。返り値が0の場合は、数値を返します。

var result = [ [ -21, 0 ], [ 22, 0 ], [ -1, 0 ], [ -5, -18 ] ] 
 

 
console.log(
 
    result.map(r => r.map(x => x < 0 ? 0 : x)) 
 
)

0

あなたは、外側と内側の配列を反復値ウント用Math.maxを使用することができます。

var array = [[-21, 0], [22, 0], [-1, 0], [-5, -18]], 
 
    result = array.map(function (a) { 
 
     return a.map(function (b) { 
 
      return Math.max(b, 0); 
 
     }); 
 
    }); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

var array = [[-21, 0], [22, 0], [-1, 0], [-5, -18]], 
 
    result = array.map(a => a.map(b => Math.max(b, 0))); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

ES6で同じ
関連する問題