我正在尝试使用JS检查字符串中的大量字母,并将结果附加到div。它看起来像这样:
var string = "AABBCCDDEEEEEEEEEE";
var stringInput = document.getElementById("string");
function showMostChar() {
var newInput = string.split("");
var inputAsArray = Array.of(newInput);
for (i = 0; i > inputAsArray; i++) {
if ((inputAsArray.indexOf("E")) > 9 ) {
stringInput.innerHTML = "E";
}
}
}
window.onload = showMostChar;
<div id="string"></div>
简单来说,我希望按字符分割一个字符串,然后用它来创建一个数组。我循环遍历数组,如果E超过9(任意值),则将E放入div中。在我使用array()
之前,我记得那不是一个有效的函数,so I did research并找到了Array.of()
,但我没有看到任何附加到字符串div的内容。
Array.of()
是不是在此上下文中创建数组的正确方法?如果不是为什么?
理想情况是记录出现次数最多的字符总数,因此在此实例中EEEEEEEEEE
。我需要以某种方式获取每个角色的价值并将它们相互比较,不知何故......类似于:
for (i = 0; i > inputAsArray; i++) {
// somehow compare values to each other? e being each instance
// so, would that be a loop within a loop?
if ((i.value()) > e ) {
stringInput.innerHTML = i;
}
}
答案 0 :(得分:3)
您的代码中需要修复的内容很少:
.split()
将返回array
,因此newInput
是
已经是array
,你不需要任何改造它。array
的正确方法是
Array.from()
,因为Array.of()
需要Number
参数。.indexOf()
,你可以直接在newInput
数组上调用它。.indexOf()
将返回
数组中index
的第一个E
,低于9
,I
在这里使用5
进行测试。这应该是你的代码:
function showMostChar() {
var newInput = string.split("");
if ((newInput.indexOf("E")) > 5 ) {
stringInput.innerHTML = "E";
}
}
<强>演示:强>
var string = "AABBCCDDEEEEEEEEEE";
var stringInput = document.getElementById("string");
function showMostChar() {
var newInput = string.split("");
console.log(newInput);
if ((newInput.indexOf("E")) > 5) {
stringInput.innerHTML = "E";
}
}
window.onload = showMostChar;
<div id="string"></div>
修改强>
要获取数组中E
的出现次数,您可以使用Array.filter()
,如下所示:
function getNumberOfOccurences(char) {
var newInput = string.split("");
return newInput.filter(function(c){
return c === char;
}).length;
}
console.log(getNumberOfOccurences("E"));
<强>演示:强>
var string = "AABBCCDDEEEEEEEEEE";
var stringInput = document.getElementById("string");
function getNumberOfOccurences(char) {
var newInput = string.split("");
return newInput.filter(function(c){
return c === char;
}).length;
}
console.log(getNumberOfOccurences("E"));