我遇到问题为什么我的.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个巨大的字符串的结果。这里显示的代码就是我通过这个数组循环时所做的事情。
答案 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'];
希望我能帮到你。