charAt"无法阅读财产"当array []在for for循环中被定义为i时。
var array =["5seconds","1seconds","234seconds","57"];
var time = ""
for(var i=0;i<=4;i++)
{
time= array[i].charAt(0);
}
document.write(time);
答案 0 :(得分:1)
您在for(var i=0;i<=4;i++)
中输入错误,导致上次迭代出错。将其更改为for(var i=0;i<4;i++)
或for(var i=0;i<array.length;i++)
var array =["5seconds","1seconds","234seconds","57"];
var time = ""
for(var i=0;i<4;i++)
{
time= array[i].charAt(0);
console.log(time);
}
&#13;
答案 1 :(得分:0)
将document.write移动到for循环内部允许第一个索引(0)记录每个字符串。这是一个片段:
var array =["5seconds","1seconds","234seconds","57"];
var time = "";
for(var i=0;i< array.length;i++)
{
time = array[i].charAt(0)
document.write(time); //goes inside the array, then it will log each 0 index
}
答案 2 :(得分:0)
你的循环是从0到4,所以在某些时刻你试图获得你的数组的位置4,这是不存在的。这导致了错误。 您应该在for循环中执行此更改:
for (var i = 0; i < 4; i++)
而且我想我应该告诉我这种从字符串中抽出时间的方法效率不高。您只使用charAt(0)获得第一个数字。 另一种方法是以下列方式存储在数组中:
var array = ["5 seconds", "1 seconds", "234 seconds"].
然后不是取第一个字符,而是在所有空格中分割字符串,只得到第一个位置(0),这将是你想要的数字。像这样:
time = array.split(" ")[0].
答案 3 :(得分:0)
正如其他人指出你的循环太过分了,最后一个索引是长度为1,所以如果你有4个元素,那么最后一个索引是3.这就是为什么最佳做法是做&gt; = array.length -1或&gt; array.length。