我一直在寻找我的问题的答案,但找不到解决方案。我想并排显示来自两个独立数组的值“ 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];
}
}
答案 0 :(得分:2)
这几乎是你正在寻找的基本for循环(假设两个数组总是大小相同):
for (var i = 0; i < names.length; i++) {
var nameString = names[i] + " " + scores[i];
//do stuff with nameString
}
答案 1 :(得分: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
//或用&#39; \ n&#39;分隔对于文本框或textarea值
答案 2 :(得分:1)
这是我尝试过的:
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++] ) ;
}
当然,你可以在一个循环中更简洁地做到这一点,但这种方法使你的意图对读者清楚。
答案 3 :(得分:0)
var i;
for(i = 0; i < names.length; i++)
{
document.write(names[i] + " " + scores[i] + "<br>");
}
或者那不是你想要的?我不确定我是否“加入”了他们。