计算数组中的数字然后写出来

时间:2015-09-25 19:48:24

标签: javascript arrays count

它仍然是学校的新生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>
&#13;
&#13;
&#13;

从昨天早上开始修补,失败和谷歌搜索后,我想再次尝试SO,因为我从这个网站学到了更多东西,然后我才能想象。

非常感谢你提前

4 个答案:

答案 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>

答案 1 :(得分: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>

答案 2 :(得分:0)

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //...

    modelBuilder.Entity<MyEntity>().Property(x => x.MyProperty).HasPrecision(18, 5);

    //...
}

答案 3 :(得分:0)

不确定我是否完全理解你要做的事情,但是如果你想显示每个数字的数量,你应该首先得到每个数字的数量,然后通过诸如:

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

}