nodejs:用高地溪流计算平均值

时间:2017-02-13 18:32:44

标签: node.js stream highland.js

我刚刚开始使用节点中的highland.js和stream,而我却试图计算某些数字的最小值/最大值/平均值。 这就是我到目前为止所做的:

const _ = require('highland');

const input = [
 { val: 1 },
 { val: 2 },
 { val: 3 },
];

_(input)
  .reduce((acc, { val }) => {
    if (typeof acc.min === 'undefined' || val < acc.min) {
      acc.min = val;
    }
    if (typeof acc.max === 'undefined' || val > acc.max) {
      acc.max = val;
    }
    acc.count = (acc.count || 0) + 1;
    acc.sum = (acc.sum || 0) + val;
    return acc;
  }, {});

如果我这样做,比如toCallbackconsole.log我得到的结果 {min: 1, max: 3, count: 3, sum: 6}但我对count和sum字段不感兴趣,我希望像{min: 1, max: 3, mean: 2}这样的对象。

然而,由于reduce的返回是一个对象,所以什么也没有 高地可以做到 - 我只能消费它,但我想在高地上做平均值。

如何从这里继续,或者我应该如何重构代码以获得平均值?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用高地.map方法:

TProcess