javascript存储循环结果

时间:2012-07-12 15:37:42

标签: javascript for-loop

有没有办法将'for循环'的结果存储在变量中?

我想在div中显示两个名字kevin和elsa。

我知道我可以做john.friends [0] .nom,john.friends [1] .nom;

但如果约翰有很多朋友,那将很难......

现在变量friendName给了我一个名字,我理解为什么但看不到解决方案......

谢谢!

function Person(name, age, friends) {
    this.name = name;
    this.age = age;
    this.friends = friends;

};

var john = new Person('john', 28, [new Person('elsa', 29, []), new Person('kevin', 31, [])]);

for (var i = 0; i < john.friends.length; i++) {
    var friendName = john.friends[i].name;
}

alert(friendName);

4 个答案:

答案 0 :(得分:4)

var friendNames = []; // store their names within a local array

for(var i = 0; i < john.friends.length; i++){
    friendNames.push(john.friends[i].name);
}

console.log(friendNames); // log to the browser (readability) instead of alert

答案 1 :(得分:1)

由于您的friends变量是一个数组,您只能使用the methods available to you on that type中的一些:

var friendString = john.friends.map(function(f) { return f.name; }).join(' ');

在上面的例子中,map method将朋友映射到他们的名字,然后join method将产生一个空格分隔的所有johns朋友的字符串。

答案 2 :(得分:1)

var friendNames = []; // create array to hold friend names

for(var i=0; i < john.friends.length; i++){    
    friendNames.push(john.friends[i].name); // add friend's name to the array
}

console.log(friendNames); // an array containing all of John's friends' names.

答案 3 :(得分:1)

您可能需要一组名称(所有名称的列表)。声明friendName = new Array()friendName.push(john.friends[i].name);

var friendName = new Array();
for (var i = 0; i < john.friends.length; i++) {
    friendName.push(john.friends[i].name);
    //or friendName[i] = john.friends[i].name;
}
//friendName is now an array of names. Use it as you need (the last line is useful for debugging)
for (i = 0; i < friendName.length; i++) alert(friendName[i]);

旧代码的问题在于循环的每次迭代都会重新分配friendName。当i = 0时,'elsa'被分配给friendName。当i = 1时,'kevin'被重新分配给friendName。

此外,javascript 具有块范围;这就像打电话给var friendName = 'elsa'; var friendName = 'kevin';。不会废弃javascript引擎,但请注意这一点。最好将friendName声明为循环上方的数组,正如其他人所提到的那样。