2

我想拆分一个字符串(“1,2,3”)并将其作为一个 int 数组返回,所以我编写了以下函数:

function stringToIntArray(string) {
    var split = {};
    split = string.split(',');

    var selected = {};

    for (var i = 0; i <= split.length; i++) {
        selected[i] = split[i];
    }

    return selected;
}

然而 split.length 总是未定义的。我的错在哪里?

4

1 回答 1

3
var selected = {};

不构建数组,而是构建一个没有length属性的对象。

您可以通过将其替换为来修复您的代码

var selected = [];

如果要返回一个数字数组,可以将代码更改为

function stringToIntArray(string) {
    var split = string.split(',');
    var selected = [];
    for (var i = 0; i < split.length; i++) {
        selected.push(parseInt(split[i], 10));
    }
    return selected;
}

请注意,我在您的循环中替换<=为。<

另请注意,对于现代浏览器,您可以使用map函数使其更简单:

function stringToIntArray(string) {
    return string.split(',').map(function(v){ return parseInt(v, 10) });
}
于 2013-04-03T08:13:09.907 回答