gpt4 book ai didi

javascript - 数组中的 indexOf 行为不正确

转载 作者:行者123 更新时间:2023-11-30 11:27:21 25 4
gpt4 key购买 nike

我正在尝试使用 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 的内容。

  1. Array.of() 不是在此上下文中创建数组的正确方法吗?如果不是为什么?

  2. 理想情况是记录出现次数最多的字符总数,因此在本例中为 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;
    }
    }

最佳答案

您的代码中有几处需要修复:

  • 首先 .split() 将返回一个 array 所以 newInput 是已经是一个数组,您不需要对其进行任何转换。
  • 另一方面,创建新数组的正确方法是 Array.from() ,因为 Array.of()接受一个 Number 作为争论。
  • 其次,您不需要任何循环来检查 .indexOf(),您可以直接在 newInput 数组上调用它。
  • 它没有进入 if block ,因为 .indexOf() 将返回数组中E的第一个index,低于9,我此处使用 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"));

关于javascript - 数组中的 indexOf 行为不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47540685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com