3

「for ループ」の結果を変数に格納する方法はありますか?

たとえば、divにkevinとelsaという2つの名前を表示したいとします。

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

4 に答える 4

6
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
于 2012-07-12T15:40:48.150 に答える
2
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.
于 2012-07-12T15:40:39.240 に答える
1

friends変数は配列であるため、その型で使用できるメソッドのいくつかを使用できます

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

上記の例では、map メソッドは友人を名前だけにマップし、次にjoin メソッドはすべてのジョンの友人のスペース区切りの文字列を生成します。

于 2012-07-12T15:40:13.640 に答える
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、friendName に「elsa」が割り当てられました。i = 1'kevin' が friendName に再割り当てされたとき。

さらに、JavaScript にはブロック スコープがありません。を呼び出すようなものvar friendName = 'elsa'; var friendName = 'kevin';です。JavaScriptエンジンを台無しにするつもりはありませんが、気をつけてください。他の人や私が言及したように、friendNameをループの上の配列として宣言することをお勧めします。

于 2012-07-12T15:41:45.060 に答える