split()没有给出预期的结果

时间:2014-07-18 12:54:52

标签: javascript

我遇到问题为什么我的.split()函数。 不知何故,当我展开我的行时,可以访问数组中的第一个[0]元素但是第二个[1]不能

我有以下字符串:

 ,{"relationID":"000001","recID":"1d2712eb-4f08-4b4f-b6e9-600c9631b503"

以下代码是我如何尝试拆分它(tempArray包含x个字符串,如上所述):

var templine = tempArray[i].substr(1, tempArray[i].length);
//alert(templine);
var line = templine.split(',');
var s1 = line[0].split('"')[3];
var s2 = line[1].split('"')[3];

当我使用alert(s1)或alert(s2)时,我确实得到了值,但是下一个行总是出现以下错误(var s2):

  

捕获了TypeError:无法读取未定义

的属性“split”

这会导致我脚本的其余部分崩溃,并且无法完成它应该显示的内容,显示空页。

我的问题,这里出了什么问题?为什么s1正常运行和s2完全相同,除了线阵列的索引使我的脚本崩溃。

我想强调当我使用alert函数检查我的变量s1和s2的值时,它们确实包含正确的值。

编辑: 也许是一个很好的奖金,因为可能有一个更容易的方式。 在我得到值s1和s2后,我想把它们放在这样的地图中:

map[s2] = s1;

因为你可以告诉我使用的字符串是在('}')上分割1个巨大的字符串的结果。这里显示的代码就是我通过这个数组循环时所做的事情。

1 个答案:

答案 0 :(得分:2)

这只能是试图访问真正undefined的数组上的元素。可能你的输入不是你所期望的。

在尝试读取阵列的索引之前检查是否line.length > 1

因为它似乎是一个JSON,可能你应该尝试解析JSON,它会使你的代码更具可读性和可靠性。使用前检查JSON.parse浏览器兼容性(IE8 +)。

例如:

var data = JSON.parse('{ "field1": "value1", "field2": "value2" }');

var s1 = data['field1'];
var s2 = data['field2'];

希望我能帮到你。