我收到错误"无法读取属性' toString'未定义"当试图从下面的数组中只检索数值时。虽然我看到输出正确但我收到此错误并且代码失败。
var array=['~ 9 view passages','~ 17 view passages','~ 1 view passages','~ 3 view passages','~ 4 view passages','~ 1 view passages'];
for (var i=0;i<=array.length;i++){
var Arraystring=array[i].toString();
var temp1 = Arraystring.replace(" view passages","");
var temp2 = temp1.replace("~","");
var temp3=parseInt(temp2);
console.log("String converted Array "+Arraystring);
console.log("Stripped Array "+temp2);
console.log("Integer Array "+temp3);
}
错误: 无法读取属性&#39; toString&#39;未定义的
答案 0 :(得分:2)
您应该使用< array.length
代替<= array.length
。
目前您正在解析超出范围的值,因此无法调用toString()
函数。
试试这种方式
var array = ['~ 9 view passages', '~ 17 view passages', '~ 1 view passages', '~ 3 view passages', '~ 4 view passages', '~ 1 view passages'];
for (var i = 0; i < array.length; i++) {
var Arraystring = array[i].toString();
var temp1 = Arraystring.replace(" view passages", "");
var temp2 = temp1.replace("~", "");
var temp3 = parseInt(temp2);
console.log("String converted Array " + Arraystring);
console.log("Stripped Array " + temp2);
console.log("Integer Array " + temp3);
}
答案 1 :(得分:1)
您的数组只包含5个元素。
但是您尝试读取最多10个元素,因此即使脚本正常工作也会出现错误。
修改脚本以读取数组长度。
var array = ['~ 9 view passages', '~ 17 view passages', '~ 1 view passages', '~ 3 view passages', '~ 4 view passages', '~ 1 view passages'];
for (var i = 0; i < array.length; i++) {
var Arraystring = array[i].toString();
var temp1 = Arraystring.replace(" view passages", "");
var temp2 = temp1.replace("~", "");
var temp3 = parseInt(temp2);
console.log("String converted Array " + Arraystring);
console.log("Stripped Array " + temp2);
console.log("Integer Array " + temp3);
}