数一下数组中的数字,然后把它们写出来

Count the numbers in an array then write them out

本文关键字:然后 数字 一下 数组      更新时间:2023-09-26

对于学院的新人来说,这仍然是老派的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>

从昨天早上开始,经过修修补补,失败和谷歌搜索,我想我再次尝试SO,因为我从这个网站中学到的东西比我想象的要多。

提前感谢您

此解决方案的特点是一个对象用于计算具有出现焦点的数字的频率。

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>

    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>

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>";
    }
}

不确定我是否完全理解您想要做的事情,但是如果您想要显示每个数字的计数,您应该首先获得每个数字的计数,然后将它们放入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
}
相关文章: