【问题标题】:How do i count occurences of an array written in an input field?如何计算输入字段中写入的数组的出现次数?
【发布时间】:2017-10-12 07:08:50
【问题描述】:
window.onload = oppstart;
var string=[];

function oppstart() {
document.getElementById("knapp").onclick=knapp;
}

function knapp(){
var felt = document.getElementById("felt").value;

var array = new Array();
array = felt.split(",");

for (var i = 0; i < array.length; i++) {
  console.log(array[i]);

}
var skrivUt = document.getElementById("utskrift");
              document.getElementById("utskrift").innerHTML = " ";

}

所以我在 HTML 中有一个名为“Felt”的输入字段。当用户输入数字“1,2,3,4,5”等时,我将它们拆分并将它们放在控制台日志中,不带逗号。在我有了自己的价值观之后,我想做的是计算数字的出现次数并将结果打印在我的 innerHTML“skrivUT”上

【问题讨论】:

  • 在函数末尾添加 knapp: skrivUt.innerHTML = ""+array.length+"";.
  • 它只计算索引的数量,而不是出现次数

标签: javascript arrays split


【解决方案1】:

您可以使用 tha 数组并使用一个对象来计算单个值的出现次数。数完后显示对象。

计数适用于没有任何原型的对象,它检查具有真值的属性是否为可用的,然后只增加计数器。在 oser 情况下,将第一个计数分配给属性。

window.onload = oppstart;

function getPlural(number, word) {
    return number === 1 && word.one || word.other;
}

function joinNice(array) {
    var a = array.slice(); // take copy, prevent mutation of array
    return a.concat(a.splice(-2, 2).join(' and ')).join(', ');
}

function oppstart() {
    document.getElementById("knapp").onclick = knapp;
}

function knapp() {
    var count = Object.create(null),
        felt = document.getElementById("felt").value,
        skrivUt = document.getElementById("utskrift"),
        array = felt.split(","),
        i;

    for (i = 0; i < array.length; i++) {
        if (count[array[i]]) {
            ++count[array[i]];
        } else {
            count[array[i]] = 1;
        }
    }

    utskrift.innerHTML = 'You wrote: ' + joinNice(Object.keys(count).map(function (k) {
        return count[k] + ' ' + getPlural(count[k], time) + ' item ' + k;
    })) + '.';
}

var time = { one: 'time', other: 'times' };
<input id="felt"> <button id="knapp">submit</button>
<p id="utskrift"></p>

【讨论】:

  • 我喜欢你解释这个的方式!谢谢你。当我运行你的代码 sn-p 时,我也打印出了括号。这应该发生吗?我在手机atm上,所以我还不能测试代码
  • 对,你在输出中得到了整个对象。如果你想获得另一个格式化的输出,你需要迭代键和值。问题中缺少结果的外观。
  • 我明白了!没有对象和 JSON 还有其他方法吗?
  • 不,没有对象,是的,没有 JSON。但您没有给出想要的输出格式。
  • 所以假设我在输入字段中写了“1,1,1,2,3,3”,我希望 innerHTML 上的输出为“你已经写了 3 个索引( 1), 1 个索引量 (2), 2 个索引量 (3)" ETC.
猜你喜欢
  • 2018-07-11
  • 2011-05-03
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
相关资源
最近更新 更多