如何找到字符串中最常见的两个字母,并使用javascript返回一个新字符串
我正在处理一个问题,要求获取一个字符串如何找到字符串中最常见的两个字母,并使用javascript返回一个新字符串,javascript,string,loops,Javascript,String,Loops,我正在处理一个问题,要求获取一个字符串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
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)
var word=“pponomababaaa”;
var len=单词长度;
函数两个字母(word){
var arr=[]
word=word.split(“”)
for(变量i=0;i
这个返回的arr
的长度为0,我不理解,因此我无法真正使用它。我试着把它放进一个物体,但它仍然有同样的问题。如何使arr
等于一个key:value对,然后找到两个最高的值,并将键按交替顺序添加到字符串中。我的代码方向正确吗?如果您将数组更改为对象,它会起作用:
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)
var word=“pponomababaaa”;
var len=单词长度;
函数两个字母(word){
var arr={}
word=word.split(“”)
for(变量i=0;i
在JavaScript中,数组([]
)不包含键值对(可以说,索引就是键)。您正在寻找的数据结构是一个普通对象({}
),它可以保存键值对
编辑
只需补充一点说明,您可以将成员添加到数组中([]
),但数组长度将为0。这是我的Chrome浏览器控制台的输出,您可以看到可以将成员添加到阵列本身。但是,不建议使用这种方法
如果将数组更改为一个对象,它将起作用:
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)
var word=“pponomababaaa”;
var len=单词长度;
函数两个字母(word){
var arr={}
word=word.split(“”)
for(变量i=0;i
在JavaScript中,数组([]
)不包含键值对(可以说,索引就是键)。您正在寻找的数据结构是一个普通对象({}
),它可以保存键值对
编辑
只需补充一点说明,您可以将成员添加到数组中([]
),但数组长度将为0。这是我的Chrome浏览器控制台的输出,您可以看到可以将成员添加到阵列本身。但是,不建议使用这种方法
这是更新后的代码,它将arr
作为对象({}
)而不是数组([]
)
var word=“pponomababaaa”;
var len=单词长度;
函数两个字母(word){
var arr={};
word=word.split(“”)
for(变量i=0;i console.log(两个字母(word))
这是更新后的代码,它将arr
作为对象({}
)而不是数组([]
)
var word=“pponomababaaa”;
var len=单词长度;
函数两个字母(word){
var arr={};
word=word.split(“”)
for(变量i=0;i
var word=“pponomababaaa”;
var len=单词长度;
函数两个字母(word){
var arr=[]
word=word.split(“”)
for(变量i=0;i
您不是在创建数组,而是在创建对象。它确实有一个键:值对,正如您将在控制台.log(arr.p)中看到的那样
要使它成为一个数组,您需要将推入arr.var word=“pponomabaaa”;
var len=单词长度;
函数两个字母(word){
var arr=[]
word=word.split(“”)
for(变量i=0;i
您不是在创建数组,而是在创建对象。它确实有一个key:value对,正如您将在console.log(arr.p)
中看到的那样,要使它成为一个数组,您需要将推入arr。您可以使用它
var myMap=newmap();
var word=“pponomababaaa”;
var chars=单词分割(“”);
chars.forEach(函数(char){
如果(!myMap.get(char)){
myMap.set(char,1);
}否则{
var count=myMap.get(char);
计数+=1;
myMap.set(char,count);
}
});
for(myMap.entries()的var[key,value]{
console.log(键+“=”+值);
}
//如果要复制到新阵列
var newarr=Array.from(myMap);
控制台日志(newarr)代码>您可以为此使用
var myMap=newmap();
var word=“pponomababaaa”;
var chars=单词分割(“”);
chars.forEach(函数(char){
如果(!myMap.get(char)){
myMap.set(char,1);
}否则{
var count=myMap.get(char);
计数+=1;
myMap.set(char,count);
}
});
for(myMap.entries()的var[key,value]{
console.log(键+“=”+值);
}
//如果要复制到新阵列
var newarr=Array.from(myMap);
控制台日志(newarr)代码>使用{}
,而不是[]
。您的arr
不是空的。在您的arr
中设置键后,它变成了一个对象。请告诉我们什么起作用