CouchDB的Javascript列表缩减器

CouchDB的Javascript列表缩减器,javascript,couchdb,couchapp,Javascript,Couchdb,Couchapp,映射出一个键和值,值是两个数字的列表 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] 我为reducer写了这个脚本 function (key, values) { val1 = 0; val2 = 0; if(values != null) for(val in values) {

映射出一个键和值,值是两个数字的列表

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]
我为reducer写了这个脚本

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];
}
这似乎不起作用,我在这里做错了什么吗?

用值[val][0]替换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];
}

在一个数组中为…赋值从来都不是一个好主意,因为它还有许多其他属性。

在CouchDB中永远不应该使用全局变量,总有干扰其他属性的风险。我编辑了代码,在每个新变量前面添加了var。编辑正在等待审核。