2017-05-17 35 views
0

當按鈕被點擊我想在陣列中的結果被列出,例如:約翰·史密斯16,傑克雪10等。循環使用兩個相關的陣列

欲使用,但是一個循環中的代碼我的循環是不正確的,因爲當我點擊按鈕,我得到的是:[對象對象]。

有人可以提供一個可能的修復?

function begin() { 
     listresults(); 
    (); 
    } 
    var results1 = {name:"John Smith", score:16}; 
    var results2 = {name:"Jack Sow", score:10}; 
    var results3 = {name:"Tessa Flip", score:15}; 
    var results = [results1, results2, results3]; 

    function listresults() { 
     var text = ""; 
     var total = 0; 
     var i; 
    for (i in results) { 
     text += results[i] + "<br>"; 
    } 
    document.getElementById('message').innerHTML = text; 


    } 
+2

那是因爲要附加的對象,而不是他們的價值觀的 嘗試:'文字+ =結果[我] .name +「」+ results [i] .score +「
」;' – warl0ck

+0

apending object try this text + = results [i] .name +''results [i] .score +「
「; – JYoThI

+0

檢查我的單行答案。我希望它會按照您的期望 –

回答

0

由於您在該字段中追加對象而不是對象值。

這是這是當你通過你的對象數組循環返回從對象訪問名字和成績的正確方法:

function begin() { 
     listresults(); 
    (); 
    } 
    var results1 = {name:"John Smith", score:16}; 
    var results2 = {name:"Jack Sow", score:10}; 
    var results3 = {name:"Tessa Flip", score:15}; 
    var results = [results1, results2, results3]; 

    function listresults() { 
     var text = ""; 
     var total = 0; 
    for (var i=0; i < results.length; i++) { 
     text += results[i].name + " " + results[i].score + "<br>"; 
    } 
    document.getElementById('message').innerHTML = text; 
    } 

這裏是一個Jsfiddle example

0

建議您使用Array方法(地圖,加入)而不是純的環

function begin() { 
 
     listresults(); 
 
    } 
 
    
 
    var results1 = {name:"John Smith", score:16}; 
 
    var results2 = {name:"Jack Sow", score:10}; 
 
    var results3 = {name:"Tessa Flip", score:15}; 
 
    var results = [results1, results2, results3]; 
 
    
 
    function listresults() { 
 
     document.getElementById('message').innerHTML = 
 
     results.map(function(item) { 
 
      return item.name + ' ' + item.score; 
 
     }).join('<br>'); 
 
      
 
     document.getElementById('total').innerHTML = 
 
     results.map(function(item) { 
 
      return item.score; 
 
     }).reduce(function(sum, score) { 
 
      return sum + score; 
 
     }, 0); 
 
    }
<button onclick="begin()">begin</button> 
 
<br /> 
 
<div id="message"></div> 
 
<div>total: <span id="total">0</span></div>

+0

謝謝!還有一個問題,我如何能夠總計所有的分數?例如,在這種情況下,總數是41。 –

+0

在你的for循環中只需要完成+ = results [i] .score;並在for循環console.log它或使用它 – warl0ck

+0

@ J.Doe在上面的例子中添加總分 –

0

您正在推動對象results1, results2,等在陣列'results'。 因此,儘管迭代陣列應該訪問的對象屬性,如下所示:

function listresults() { 
     var text = ""; 
     var total = 0; 
     var i; 
    for (i in results) { 
     text += results[i]['name'] + ' ' + results[i]['score'] + "<br>"; 
    } 
1

我首先檢查2個數組的長度是相同的。然後循環使用for循環:

final int timeLength = TIME.length; 
if (timeLength != stat.size()) { 
    //something may not be right 
} 
for (int i = 0; i < timeLength; i++) { 
    System.out.println(time[i]+" "+stat.get(i)); 
} 
0

使用Array.map()Array.join()

var results1 = {name:"John Smith", score:16}; 
 
var results2 = {name:"Jack Sow", score:10}; 
 
var results3 = {name:"Tessa Flip", score:15}; 
 
var results = [results1, results2, results3]; 
 

 
var res = results.map(item => { return item.name+ " " +item.score }); 
 

 
console.log(res.join(", "));