使用for循环语句了解数组迭代

时间:2013-09-18 11:05:29

标签: javascript arrays for-loop

所以我有这个简单的脚本用数组填充变量。然后我使用带有for循环的函数来迭代通过数组来获取它的索引值。

function printAllArrayValues(array) {
    for (var i = 0; i < array.length; i++) {
        var c;
        c += array[i];
    }
    return c;
}
var colorArray = ["brown", "blue", "green"];
alert(printAllArrayValues(colorArray));

该函数返回一个包含所有数组值的字符串,但第一个值= undefined。请参阅小提琴:http://jsfiddle.net/vcyum/

为什么?

4 个答案:

答案 0 :(得分:1)

更简单的解决方案:

var colorArray = ["brown", "blue", "green"];
alert(colorArray.join('')); // "brownbluegreen"
alert(colorArray.join(',')); // "brown,blue,green"

答案 1 :(得分:1)

c变量的初始值为undefined。 下一行c += 'stuff'将字符串'stuff'添加到c中的值。由于c的初始值为undefined,因此会将其转换为字符串,结果为'undefined',因此c的值现为'undefinedstuff'

您的代码可以像这样修复:

function printAllArrayValues(array) {
    var c = '';
    for (var i = 0; i < array.length; i++) {        
        c += array[i];
    }
    return c;
}
var colorArray = ["brown", "blue", "green"];
alert(printAllArrayValues(colorArray));

或更简单:

var colorArray = ["brown", "blue", "green"];
alert(colorArray.join(''));

答案 2 :(得分:0)

要修复您的错误,您可以更改

for(var i = 0; i < array.length; i++){
    var c;

var c = '';
for(var i = 0; i < array.length; i++){

这样就不会在第一次迭代时添加undefined(在字符串连接中转换为"undefined")。

但您也可以使用colorArray.join('')替换整个功能。

答案 3 :(得分:0)

在你的循环中,你声明c,但不指定任何内容。因此变量具有'值'undefined。现在,如果您向其中添加一个字符串,undefined将被装入一个字符串中,您添加的字符串将被附加到该字符串中。

无论如何:这里不需要循环:使用colorArray.join('');获得相同的结果。