簡體   English   中英

如何在字符串中找到2個最常見的字母並使用javascript返回一個新字符串

[英]How do I find the 2 most frequent letters in a string and return a new string with them with javascript

我正在上要求帶一個字符串的問題string並在返回與2個最常見的字母一個新的字符串string交替排列。

我的代碼:

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等於key:value對,然后找到2個最高values ,它們將keys以交替順序添加到字符串中。 我使用的代碼朝正確的方向前進嗎?

如果將數組更改為對象,則可以使用:

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瀏覽器控制台中的輸出,您可以在其中看到可以將成員添加到數組中本身。 但是,不建議使用此方法。

在此處輸入圖片說明

您可以為此使用地圖

 var myMap = new Map(); var word = "pponoomababaaa"; var chars = word.split(""); chars.forEach(function(char) { if (!myMap.get(char)) { myMap.set(char, 1); } else { var count=myMap.get(char); count+=1; myMap.set(char,count); } }); for (var [key, value] of myMap.entries()) { console.log(key + " = " + value); } //if to copy to new array var newarr=Array.from(myMap); console.log(newarr); 

希望這可以幫助

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
  }
console.log(arr.p)
return arr  // [ p: 2, o: 3, n: 1, m: 1, a: 5, b: 2 ]

}
twoLetters(word)

您不是在創建數組,而是在創建對象。 它確實具有key:value對,如您將在console.log(arr.p)看到的那樣,要使其成為數組,您需要將其push入arr。

這是更新的代碼,其中arr作為對象( {} )而不是數組( []

 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 ] } console.log(twoLetters(word)) 

在數組中設置鍵將把它變成一個對象。 您的arr = []在jsbin( http://jsbin.com/povimehiyu/ )中運行正常(請檢查控制台)。 但不在代碼段中,因此修改了arr = {}

  • 在對象中添加鍵值將不會創建/更新length屬性。
  • 在上面的代碼中,在arr添加鍵將其更改為對象,並且只要在arr中設置鍵值的人就不會更新length屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM