我想问一下,是否有任何简短的方法可以为数组的每个元素重复一个方法。我必须在输入框中计算每个字母的出现次数,我的想法是使用.match(/letter/gi).length
并为此数组的每个元素执行它:var alphabet = "abcdefghijklmnopqrstuvwxyz".split("");
这可能吗?
答案 0 :(得分:0)
您可以创建一个对象来存储字符作为属性,字符数作为值存储;附加到Object.hasOwnProperty()
元素的change
,input type="text"
事件for
循环迭代value
input type="text"
元素并设置属性,创建对象的值;要显示结果的input type="button"
元素,请将input type="text"
元素值重置为空字符串""
。
var input = document.querySelector("input[type=text]")
, button = document.querySelector("input[type=button]")
, output = document.querySelector("pre")
, obj = {};
input.addEventListener("change", function(event) {
var letters = event.target.value;
for (var i = 0; i < letters.length; i++) {
if (!obj.hasOwnProperty(letters[i])) {
obj[letters[i]] = 1; // set initial value to `1`
} else {
++obj[letters[i]] // increment value of `obj[letters[i]]`
}
};
});
button.addEventListener("click", function() {
console.log(obj);
output.textContent = JSON.stringify(obj, null, 2); // display result
input.value = ""; // reset `input` to `""`
})
&#13;
<input type="text" />
<input type="button" value="Count characters" />
<pre>
</pre>
&#13;