0

我有一个单一的输入,我可以在其中提交文本:姓名、分数

我正在解析结果,以便将名称作为字符串存储在变量中,并将分数作为整数存储在变量中。这看起来很笨重。有没有一种方法可以在不需要五个单独的变量的情况下解析文本?

// capture submitted string result
var namescore = document.getElementById('namescore').value;

// split it at the comma
var parts = namescore.split(", ");

// make sure first part is a string
var pname = parts [0].toString();

// convert score string to integer
var scoreString = parts [1];
var score = parseInt(scoreString, 10);
4

4 回答 4

5

这里有两个变量:

var parts = document.getElementById('namescore').value.split(", ");
var result = {
    name: parts[0],
    score: parseInt(parts[1], 10)
}

您可以像这样访问分数:

result.score

还有名字:

result.name
于 2013-10-01T14:57:52.307 回答
2

即使在您的代码中也可以轻松消除两个:

// split it at the comma
var parts = document.getElementById('namescore').value.split(", ");

// make sure first part is a string
var pname = parts[0].toString();

// convert score string to integer
var score = parseInt(parts[1], 10);

或者你真的不需要 pname 和 score,如果你只使用一次,那么你可以使用等式右侧的内容。然后你只剩下 1 个变量:parts

于 2013-10-01T14:59:48.570 回答
1

无论如何,您不需要以这种方式为每个操作引入一个变量:

// capture submitted string result
var parts = document.getElementById('namescore').split(", ");

// make sure first part is a string
var pname = parts[0].toString();

// convert score string to integer
var score = parseInt(parts[1], 10);

上面的代码与您的代码完全相同。您可以跳过.toString调用:拆分字符串的结果将始终是字符串数组。

于 2013-10-01T14:59:14.940 回答
0

有什么理由不让它们成为零件数组的成员吗?

// capture submitted string result
var namescore = document.getElementById('namescore').value;

// split it at the comma
var parts = namescore.split(", ");


parts[0] = parts[0].toString();
parts[1] = parseInt( parts[1], 10 );
于 2013-10-01T14:57:17.193 回答