有没有办法将'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);
答案 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声明为循环上方的数组,正如其他人所提到的那样。