-3

私は自分の質問に対する答えを探しましたが、解決策を見つけることができませんでした。2 つの個別の配列の値を並べて表示したい " without joining the arrays together."

元。

var names = ["Ben", "Joel", "Randy"];
var scores = [88, 99, 100];

それらを結合したり連結したりせずに、テキストボックスに並べて表示したい。それらは、異なる操作のために別々にしておく必要があります。

元。

Ben, 88
Joel, 99
Randy, 100

どんな助けでも大歓迎です!ありがとう。

これは私が試したことです:

var list = "";
for (var n in names) {
    for (var s in scores) {
        list = names[n] + ", " + scores[s]; 

    }

}
4

4 に答える 4

2

これは、探しているほとんど基本的な for ループです (両方の配列が常に同じサイズであると仮定します)。

for (var i = 0; i < names.length; i++) {
    var nameString = names[i] + "   " + scores[i];
    //do stuff with nameString
}
于 2013-05-28T20:51:56.003 に答える
2
var names = ["Ben", "Joel", "Randy"];
var scores = [88, 99, 100];

var text=names.map(function(itm,i){
   return [itm,scores[i]];
}).join('<br>');

// 要素の innerHTML にテキストを返す

// または、テキスト ボックスまたはテキストエリアの値を '\n' で区切ります

于 2013-05-28T20:54:39.000 に答える
1

OPは言った(そして私は引用する)

これは私が試したことです:

var list = "";
for (var n in names) {
  for (var s in scores) {
    list = names[n] + ", " + scores[s]; 
  }
}

ここでの問題は、ループをネストしていることです。これにより、2 つのセットのデカルト積が得られます (たとえばnames、長さが 10 で「スコア」の長さが 20 の場合、名前とスコアの組み合わせごとに 1 行ずつ、結果として 200 行が得られます。

このようなアプローチは、長さが異なるリストを扱うため、最善の策です。

var names = [ ... ] ;
var scores =  [ ... ] ;
var cnt = names.length < scores.length ? names.length : scores.length ;
var i = j = 0 ;

// process all matching elements
while ( i < cnt && j < cnt )
{
  process( name[i++] , score[i++] ) ;
}

// process names w/o scores
while ( i < cnt )
{
  process( names[i++] , null ) ;
}

// process scores w/o names
while ( j < cnt )
{
  process( null , scores[j++] ) ;
}

もちろん、すべてを 1 つのループでより簡潔に行うこともできますが、このアプローチにより、読者に意図が明確になります。

于 2013-05-28T21:03:49.497 に答える
0
var i;

for(i = 0; i < names.length; i++)
{
   document.write(names[i] + " " + scores[i] + "<br>"); 
}

それとも、それはあなたが探しているものではありませんか? 私がそれらに「参加」したかどうかはわかりません。

于 2013-05-28T20:53:31.283 に答える