Редуктор списков JavaScript для CouchDB - PullRequest
1 голос
/ 07 октября 2011

Карта выводит ключ и значение, значение представляет собой список из двух чисел

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];
}

Кажется, это не работает. Я что-то здесь не так делаю?

1 Ответ

0 голосов
/ 07 октября 2011

Заменить 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];
}

Это никогда не является хорошей идеей для ... в массиве, потому что у него есть много других свойств.

...