javascript - 如何使用 javascript 找到字符串中最常见的 2 个字母并返回一个新字符串

标签 javascript string loops

我正在解决一个问题,要求获取字符串 string 并返回一个新字符串,其中 string 中 2 个最常见的字母以交替顺序排列。

我的代码:

var word = "pponoomababaaa";
var len = word.length;

function twoLetters (word){
var arr = []
word = word.split("")
for (var i = 0; i < word.length; i++){
    if ((arr[word[i]])) arr[word[i]] += 1
    else arr[word[i]] = 1
  }
return arr  // [ p: 2, o: 3, n: 1, m: 1, a: 5, b: 2 ]
}
twoLetters(word)

返回的arr长度为0,我不明白,所以我不能用它做任何事情。我尝试将其放入对象中,但仍然存在相同的问题。如何让 arr 等于键:值对,然后找到 2 个最高的 并将它们按交替顺序将 添加到字符串中。我的代码是否朝着正确的方向前进?

最佳答案

如果将数组更改为对象,它就会起作用:

var word = "pponoomababaaa";
var len = word.length;

function twoLetters (word){
  var arr = {}
  word = word.split("")
  for (var i = 0; i < word.length; i++){
    if ((arr[word[i]])) arr[word[i]] += 1
    else arr[word[i]] = 1
  }
  return arr  // { p: 2, o: 3, n: 1, m: 1, a: 5, b: 2 }
}

twoLetters(word)

在 JavaScript 中,数组 ([]) 不包含键值对(嗯,有点:索引可以说是键)。您要查找的数据结构是一个普通对象 ({}),它可以保存键值对。

编辑

只是为了添加一点说明,您可以将成员添加到数组 ([]) 中,但数组长度将为 0。这是我在 Chrome 中的浏览器控制台的输出,您可以在其中可以看到您可以将成员添加到数组本身。但不推荐这种方法。

enter image description here

关于javascript - 如何使用 javascript 找到字符串中最常见的 2 个字母并返回一个新字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40493860/

相关文章:

javascript - NodeJS 流和请求模块

string - 如何在powershell中解析字符串

java.lang.IllegalStateException : Scanner closed

Excel If 循环内的逻辑运算符

javascript - Cosmos-DB/Document-DB中如何使用Loop执行存储过程?

javascript - 在两个单独的数组上嵌套 ng-repeat

javascript - icheck.js 和 Meteor 应用程序

javascript - 获取事件未收到请求 header

java - string.replaceAll() 是如何工作的?

python - 如何在Python中编写selenium循环?