javascript - 将逗号分隔的数字字符串转换为数字

标签 javascript node.js express mathjs

我正在尝试获取要在 Node.js 中的 math.js 库 ( https://github.com/josdejong/mathjs/blob/master/docs/functions.md ) 中处理的逗号分隔数字列表。

虽然我得到了像“2,4,5”这样的数字列表,并进行了逗号分割以存储在数组中。该库拒绝使用 math.add() 函数处理我的数组。它需要单独的整数来处理。我可以将函数与 array[0]、array[1] 一起使用,但我想使用单个变量一次提供所有整数。

exports.add = function(req, res) {
    var v = req.params.v;
    var array = v.split(",");
    var intarray = [];
    for(var i=0; i<array.length; i++) {
        intarray[i] = +array[i];
    }
    var result = math.add(intarray);
    res.end(result.toString());
}

最佳答案

更新:您说过要使用所有值调用 math.add 一次,但我认为它不支持这样做。该函数的文档和 the source说它只支持两个参数,而不是无限的一系列。

所以你不能一次完成所有的事情;你最好在解析时这样做:

exports.add = function(req, res) {
    var v = req.params.v;
    var array = v.split(",");
    var result = 0;
    for(var i=0; i<array.length; i++) {
        result = math.add(result, +array[i]);
    }
    res.end(result.toString());
}

或者在启用 ES5(或经过调整)的环境中:

exports.add = function(req, res) {
    var result = 0;
    req.params.v.split(",").forEach(function(val) {
        result = math.add(result, val);
    });
    res.end(result.toString());
}

但是既然你知道这些是 JavaScript 数字,我根本看不出有任何理由使用 math.add 。它只是将它们加在一起,允许各种类型。但您知道这些数字的类型,因此除了调用它的开销之外,您什么也得不到。

我去寻找之前的原始答案:

<小时/>

It needs individual integers to process. I could use the function with array[0],array[1] but I want to provide all the integers at once using a single variable.

如果math.add支持一系列离散参数,您可以像这样使用数组:

var result = math.add.apply(math, intarray);

apply 调用您调用的函数,使用您在调用中作为 this 值提供的第一个参数,以及作为第二个参数提供的数组内容作为函数的各个参数。

举个例子更容易理解:

/// A function accepting three formal arguments
function foo(a, b, c) {
    console.log("a = " + a);
    console.log("b = " + b);
    console.log("c = " + c);
}

// An array with 1, 2, 3 in it
var a = [1, 2, 3];

// Call `foo`, passing in the array to use as the discrete arguments
foo.apply(undefined, a);

输出:

a = 1
b = 2
c = 3

在该示例中,我不需要 this 是对 foo 的调用中的任何特定内容,因此我使用了 undefined。当调用对象的方法(例如,math.add)时,最好使用该对象,因为这通常是调用中的 this

关于javascript - 将逗号分隔的数字字符串转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22328731/

相关文章:

node.js - 在 Express.js 中 res.send() 后退出

javascript - Recastai 不是一个函数

javascript - 接受可以包含特定集合的字符串+如果包含特定单词则拒绝它

node.js - Express Router CRUD 更新和删除数据

node.js - Mongoose:查询数据库排除包含非拉丁字符的结果

javascript - 书架JS : How to define relationship with a foreign key other than ID

node.js - npm 强大的形式仅返回最后一个复选框值

javascript - OpenLayer 4 弹出窗口,防止指针指向 div 后面的目标数据

javascript - 如何检索从桌面应用程序发送到 Rails API 的图像

node.js - ERR_REQUIRE_ESM 来自 webpack 导入 ESM 包