-3

我已经到处寻找我的问题的答案,但找不到解决方案。我想并排显示来自两个单独数组的值“ 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
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 回答
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 回答
1

OP说(我引用)

这是我尝试过的:

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

您的问题是您正在嵌套循环。这为您提供了两组的笛卡尔积names(例如,如果您的长度为 10,而您的“分数”的长度为 20,那么您将得到 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++] ) ;
}

当然,您可以更简洁地在一个循环中完成,但这种方法可以让读者清楚地了解您的意图。

于 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 回答