CharAt不适用于for循环

时间:2017-12-15 01:12:09

标签: javascript

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);

4 个答案:

答案 0 :(得分:1)

您在for(var i=0;i<=4;i++)中输入错误,导致上次迭代出错。将其更改为for(var i=0;i<4;i++)for(var i=0;i<array.length;i++)

&#13;
&#13;
var array =["5seconds","1seconds","234seconds","57"]; 
var time = ""

for(var i=0;i<4;i++)
{
    time= array[i].charAt(0);
    console.log(time);
}  
&#13;
&#13;
&#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。