代码之家  ›  专栏  ›  技术社区  ›  David L

array reduce on javascript返回具有数组链接性的错误值

  •  0
  • David L  · 技术社区  · 7 年前

    我正在尝试对一组对象进行数学运算。使用映射获取对象内部的值,然后减少以生成计算。出于某种原因,reduce不返回正确的值。

    这是一个例子:

    var test = [{
      id: 1,
      value: 2
    }];
    var newe = test.map((x) => x.value).reduce(function(total, sum) {
      console.log([total, sum]);
      return total + (sum * 2);
    });
    

    它应该返回4,但是它返回2。

    你知道怎么回事吗?我在jfiddle上共享代码 https://jsfiddle.net/dleo7/ckgnrubh/10/

    2 回复  |  直到 7 年前
        1
  •  1
  •   Ele    7 年前

    MDN

    initialValue reduce() 1 0

    2

    var test = [{
      id: 1,
      value: 2
    }];
    var newe = test.map((x) => x.value).reduce(function(total, sum) {
      return total + (sum * 2);
    }, 0);
    // ^
    // |
    // +---- InitialValue
    
    console.log(newe);
    .as-console-wrapper { max-height: 100% !important; top: 0; }
        2
  •  0
  •   Omidam81    7 年前

    var test = [{
      id: 1,
      value: 2
    }];
    var newe = test.map((x) => x.value).reduce(function(total, sum) {
      console.log([total, sum]);
      return total + (sum * 2);
    }, 0);
    
    document.getElementById('output').innerHTML = newe;