1

我想做一些非常简单的事情。我想通过 openwhisk 和 javascript 找到 JSON 对象的所有元素的总和。但是,以下代码会给出 0 作为结果。

function sum(params){
        var s=0;
        for(var i=0; i<params.length; i++) s+=params[i];
        return s;
}

function main(params){
        return {payload : sum(params)};
}

作为输入,我有例如这有{0: 2, 1: 56, 2: 99, 3:12} 什么建议吗?

4

2 回答 2

3

与其说是 OpenWhisk 问题,不如说是 JavaScript 问题,但请看这里:

function sum(params) {
    return Object.values(params).reduce((acc, cur) => acc + cur);
}

function main(params) {
    return {payload: sum(params)};
}

Object.values(obj)返回对象中所有值的数组。reduce使用聚合函数将数组的所有值聚合为单个值(acc + cur在本例中)

于 2018-02-04T12:40:29.353 回答
2

{0: 2, 1: 56, 2: 99, 3:12}这是对象,因此params.length无效。

尝试数组输入:

[2, 56, 99, 12]

否则,遍历对象:

function sum(params){
    var s=0;
    for(var key in params) {
      if (params.hasOwnProperty(key)) {
        s += parseInt(params[key]);
      }
    }
    return s;
}

function main(params){
    return {payload : sum(params)};
    // params = {0: 2, 1: 56, 2: 99, 3:12}
}
于 2018-02-04T12:24:06.367 回答