1
var myArray = ['burak', 'mirhan', new Date(), 'ibrahim'];


for (var i = 0; i <= myArray[i].toString ().length; i++) {
    alert (myArray [i].toString ().length); 
}

我写了上面的代码。有用。但萤火虫警告“myArray[i] 未定义”。我解决不了。你能帮我解决这个问题吗?正如你所理解的,我对 javascript 有点陌生。我正在努力学习所以谢谢你的帮助。

4

4 回答 4

4

当您遍历一个数组时,您应该只查看数组的长度,而不是数组当前元素中字符串的长度:

for (var i = 0; i < myArray.length; i++) 
于 2012-11-01T00:08:30.513 回答
2
var myArray = ['burak', 'mirhan', new Date(), 'ibrahim'];


for (var i = 0, len = myArray.length; i < len; i++) {
    console.log(myArray[i]);
};

如果你是 JS 效率高的:)

于 2012-11-01T00:09:50.173 回答
2

在 JavaScript 中,数组索引从 开始0,并且数组的.length属性将比当前最高元素索引高 1。因此,对于具有四个连续元素的数组,.length将为 4,元素索引为 0、1、2 和 3。

您需要将循环设置为从0to运行.length - 1,因此请使用i < myArray.length而不是i <= myArray[i].toString ().length

for (var i = 0; i < myArray.length; i++)

除了该错误之外,您认为您的代码正在工作的原因是因为您有i <= myArray[i].toString ().length它正在测试数组中元素值的i长度toString()而不是数组本身的长度。因此,在第一次迭代时i,它会测试 0 是否小于或等于数组中第一个元素的长度,在第二次迭代中,它会测试是否i小于第二个元素的长度,依此类推。因为数组中的所有项.toString().length的长度都大于数组本身的长度,所以循环确实遍历了所有元素,但是当i到达4它时尝试测试一个不存在的元素。

于 2012-11-01T00:42:24.160 回答
1

假设您要遍历数组中的每个项目,则需要获取数组长度:

var myArray = ['burak', 'mirhan', new Date(), 'ibrahim'];


for (var i = 0; i < myArray.length; i++) {
    alert (myArray [i].toString ().length); 
}
于 2012-11-01T00:08:55.090 回答