2015-09-25 31 views
0

這對學院的新手來說仍然是JS老派。統計數組中的數字,然後寫出

我已經創建了一個輸入,使用戶可以在輸入中輸入一些數字來寫出數組。

接下來我要做的就是爲每個數字寫出一個帶有計數器的段落,例如數字已被使用多少次。

如果陣列[0,0,1,1,1,2,2,2,2];

而且我希望它寫出來是這樣的:

「多少次你的電話號碼出現在陣中:」
0:2
1 :3
2:4

到目前爲止,我已經把它打印出輸入的數字,但我找不到像上面這樣寫出來的方法。

var numbers = []; 
 
    
 
    function numbarray() { 
 
     numbers.push(document.getElementById("box").value); 
 
    
 
     document.getElementById("text1").innerHTML = ""; 
 
     document.getElementById("text1").innerHTML += numbers.join(", "); 
 
    
 
     }
 <input type="text" id="box" placeholder="0-9 with comma" /> 
 
     <input type="button" value="Click" onclick="numbarray()" /> 
 
     <br> 
 
     Your array:<span id="text1"></span><br>

修修補補,失敗,從昨天早上開始使用Google我有我身影嘗試如此反覆,因爲我已經學會從這個網站更多的話,我能想象以後。

非常感謝你提前

+1

你有顯示數據或計算每個號碼使用多少次的問題? – NendoTaka

回答

1

var numbers = []; 
 
    
 
    function numbarray() { 
 
     numbers = []; 
 
     numbers = numbers.concat(document.getElementById("box").value.split(',')); 
 
     var hash = {}; 
 
     for(var i=0; i<numbers.length; i++) { 
 
      if (typeof hash[numbers[i]] === 'undefined') hash[numbers[i]] = 0; 
 
      hash[numbers[i]] ++; 
 
     } 
 
    
 
     document.getElementById("text1").innerHTML = ""; 
 
     for(var k in hash) { 
 
      document.getElementById("text1").innerHTML += k + ': ' + hash[k] + '\n'; 
 
     } 
 
     }
 <input type="text" id="box" placeholder="0-9 with comma" /> 
 
     <input type="button" value="Click" onclick="numbarray()" /> 
 
     <br> 
 
     Your array:<span id="text1"></span><br>

+0

謝謝@KrisOye!這些是我最近玩過的東西,所以我瞭解了大部分代碼:)將使用您的真棒輸入,並嘗試盡我所能地使用它! 乾杯!如果你願意,請幫助\導師們(不僅在SO上),如果我偶爾能夠提供一些代碼,我會很榮幸和感激:D – gruffmeister

0
function numbarray() { 
    var nums = {}; // Use a dictionary for tallying numbers 
    var numStrings = document.getElementById("box").value.split(","); // Split by commas 
    // Just tally up each number 
    for (var i = 0; i < numStrings.length; i++){ 
     var num = numStrings[i]; 
     if (num in nums){ 
      nums[num]++; 
     } 
     else { 
      nums[num] = 1; 
     } 
    } 
    var keys_ = Object.keys(nums); // Get the keys and sort them 
    keys_.sort(); 
    document.getElementById("text1").innerHTML = "<br>"; // Reset the html 
    for (var key in keys_){ 
     // Print out each number and its tally 
     document.getElementById("text1").innerHTML = key + ": " + nums[key] + "<br>"; 
    } 
} 
+0

他擊敗了我的拳頭和他的鍵(漂亮)。 –

0

不知道如果我完全理解你正在嘗試做的,但如果你想顯示每個數字的計數,你應該先把每個計數號碼,然後將它們放置在你的DOM,通過函數如:

var numbers = []; 

var numbersObject = {}; 

function numbarray() { 

    numbers.push(document.getElementById("box").value); 

//put numbers in object to get count of each 
    for(i=0; i<numbers.length; i++){ 
     if(numbersObject[numbers[i]]){ 
      numbersObject[numbers[i]]++ 
     }else{ 
      numbersObject[numbers[i]] = 1 
     } 
    } 

//prepare HTML 

    var content = ''; 

    for(var key in numbersObject){ 
     content += key + ':' + numbersObject[key] + '<br>'; 
    } 

    document.getElementById("text1").innerHTML = content 

} 
+0

沒有分裂,但你必須單獨添加每個數字。 –

+0

哦,好啊,請致電 –

2

該解決方案具有一個對象,用於計算出現焦點的數字的頻率。

function count() { 
 
    var numbers = document.getElementById("box").value 
 
      .split(',') 
 
      .map(Number) 
 
      .filter(isFinite), 
 
     distribution = numbers.reduce(function (r, a) { 
 
      r[a] = (r[a] || 0) + 1; 
 
      return r; 
 
     }, {}); 
 

 
    document.getElementById("text1").innerHTML = numbers.join(", "); 
 
    document.getElementById("distribution").innerHTML = Object.keys(distribution) 
 
     .sort(function (a, b) { 
 
      return distribution[b] - distribution[a]; 
 
     }) 
 
     .map(function (k) { 
 
      return k + ': ' + distribution[k]; 
 
     }).join('<br>'); 
 
}
<input type="text" id="box" placeholder="0-9 with comma" /> 
 
<input type="button" value="Click" onclick="count()" /><br> 
 
Your array: <span id="text1"></span><br> 
 
How many times does your number appears in your array:<br> 
 
<div id="distribution"></div>

+0

'這是一羣最清潔的人。可以拋出一個.sort(函數(a,b){return distribution [a] == distribution [b]?0:(distribution [a]

+1

@KrisOye,這是一個好主意,但是我把它插入了一段時間更短... –

+0

我需要更多的睡眠......我通常也是這樣做的。咩。 +1周圍。 –

相關問題