1

マップ出力はキーと値を出力し、値は 2 つの数値のリストです

key1 [1,2]
key1 [4,8]
key2 [1,6]
key2 [2,0]

私が書いていたレデューサーは

key1 [1+4, 2+8] = key1 [5,10]
key2 [1+2, 6+0] = key2 [3,6]

レデューサー用にこのスクリプトを作成しました

function (key, values) {

    val1 = 0;
    val2 = 0;
  if(values != null)
    for(val in values) {
        val1 += parseInt(val[0]);

        val2 += parseInt(val[1]);
}

return [val1,val2];
}

これは機能していないようです。ここで何か間違ったことをしていますか?

4

1 に答える 1

0

val[0]と置き換えますvalues[val][0]

またはさらに良い:

function (key, values) {

    var val1 = 0;
    var val2 = 0;
    if(values != null) {
      for(var i = 0; i < values.length; i++) {
        var val = values[i];
        val1 += parseInt(val[0]);

        val2 += parseInt(val[1]);
      }
    }
    return [val1,val2];
}

配列には他にも多くのプロパティがあるため、for...in は決して良い考えではありません。

于 2011-10-06T21:01:38.690 に答える