Javascript 计算字符串中的所有字符
我想计算字符串中的所有字符并将其返回给对象。我试过了,但没能得到正确的答案 这是我的代码:Javascript 计算字符串中的所有字符,javascript,arrays,object,Javascript,Arrays,Object,我想计算字符串中的所有字符并将其返回给对象。我试过了,但没能得到正确的答案 这是我的代码: 函数countAllCharacters(str){ var a=str.split(“”); var obj={}; a、 forEach(函数){ var计数=0; 对于(var j=0;j而言,最小的必要更改是obj[a[j]]=count;应该是obj[s]=count;,因为无论j是否引用当前正在计数的字母,都会在内部循环的每次迭代中运行该行 函数countAllCharacters(str
函数countAllCharacters(str){
var a=str.split(“”);
var obj={};
a、 forEach(函数){
var计数=0;
对于(var j=0;j而言,最小的必要更改是obj[a[j]]=count;
应该是obj[s]=count;
,因为无论j
是否引用当前正在计数的字母,都会在内部循环的每次迭代中运行该行
函数countAllCharacters(str){
var a=str.split(“”);
var obj={};
a、 forEach(函数){
var计数=0;
对于(var j=0;j而言,最小的必要更改是obj[a[j]]=count;
应该是obj[s]=count;
,因为无论j
是否引用当前正在计数的字母,都会在内部循环的每次迭代中运行该行
函数countAllCharacters(str){
var a=str.split(“”);
var obj={};
a、 forEach(函数){
var计数=0;
对于(var j=0;j我认为,当您可以仅使用forEach
时,您不需要使用forEach
和for
循环在一起。下面是代码
函数countAllCharacters(str){
var a=str.split(“”);
var obj={};
a、 forEach(函数){
如果(obj[s]){
obj[s]=obj[s]+1;
}否则{
obj[s]=1;
}
});
返回obj;
}
console.log(countAllCharacters('banana');
我认为您不需要同时使用forEach
和for
循环,只要您可以使用forEach
。下面是代码
函数countAllCharacters(str){
var a=str.split(“”);
var obj={};
a、 forEach(函数){
如果(obj[s]){
obj[s]=obj[s]+1;
}否则{
obj[s]=1;
}
});
返回obj;
}
console.log(countAllCharacters('banana');
这里的问题是在计数尚未完成时分配obj[a[j]]=count;
。您应该将函数更改为:
function(s){
var count=0;
for(var j=0;j<a.length;j++){
if(s==a[j]){
count+=1;
}
}
obj[s]=count;
}
这里的问题是,当计数尚未完成时,您分配了obj[a[j]]=count;
。您应该将函数更改为:
function(s){
var count=0;
for(var j=0;j<a.length;j++){
if(s==a[j]){
count+=1;
}
}
obj[s]=count;
}
事实上,您可以通过更好的性能来计数,您循环的次数超过了您需要的次数
函数countAllCharacters(str){
var a=str.split(“”);
var obj={};
对于(var j=0;j实际上,您可以通过更好的性能来计数,您的循环比您需要的要多
函数countAllCharacters(str){
var a=str.split(“”);
var obj={};
对于(var j=0;j我将使用reduce操作,如下所示
const str=“香蕉”
const charCounts=Array.from(str).reduce((counts,char)=>{
计数[字符]=(计数[字符]| | 0)+1
返回计数
},Object.create(空))
info(charCounts)
我会使用reduce操作,如下所示
const str=“香蕉”
const charCounts=Array.from(str).reduce((counts,char)=>{
计数[字符]=(计数[字符]| | 0)+1
返回计数
},Object.create(空))
console.info(charCounts)
我意识到这不是最漂亮的,但我希望它能展示如何使用console来帮助调试循环
function countAllCharacters(str) {
var a = str.split("");
var obj = {};
a.forEach(function(s){
console.log(s);
var count=0;
for(var j in a){
// commas can come in really handy and help avoid huge debug blocks.
console.log('_',j,s,a[j]);
if(s==a[j]){
console.log('count++');
count++;
}
obj[s] = count;
}
});
return obj;
}
console.log(countAllCharacters('banana'));
我意识到这并不是最漂亮的,但我希望它能展示如何使用控制台来帮助调试循环
function countAllCharacters(str) {
var a = str.split("");
var obj = {};
a.forEach(function(s){
console.log(s);
var count=0;
for(var j in a){
// commas can come in really handy and help avoid huge debug blocks.
console.log('_',j,s,a[j]);
if(s==a[j]){
console.log('count++');
count++;
}
obj[s] = count;
}
});
return obj;
}
console.log(countAllCharacters('banana'));
您必须将obj[a[j]=count
放入if
语句中
这将返回正确的结果
function countAllCharacters(str) {
var a = str.split("")
var obj = {}
a.forEach(function(s){
var count=0
for(var j=0;j<a.length;j++){
if(s===a[j]){
count+=1
obj[a[j]]=count
}
}
})
return obj
}
console.log(countAllCharacters('banana'))
函数countAllCharacters(str){
变量a=str.split(“”)
var obj={}
a、 forEach(函数){
变量计数=0
对于(var j=0;j您必须将obj[a[j]]=count
放入if
语句中
这将返回正确的结果
function countAllCharacters(str) {
var a = str.split("")
var obj = {}
a.forEach(function(s){
var count=0
for(var j=0;j<a.length;j++){
if(s===a[j]){
count+=1
obj[a[j]]=count
}
}
})
return obj
}
console.log(countAllCharacters('banana'))
函数countAllCharacters(str){
变量a=str.split(“”)
var obj={}
a、 forEach(函数){
变量计数=0
对于(var j=0;j已经有很多朋友提交了他们的观点和很酷的解决方案。以下是我的解决方案,代码最简单:
const src='banana';
常量计数=str=>
[…str].reduce((acc,val)=>(acc[val]?(acc[val]+):(acc[val]=1,acc),{});
console.log(count(src));
。作为控制台包装器{min height:100%}
已经有很多朋友提交了他们的意见和很酷的解决方案。下面是我用最简单的代码给出的解决方案:
const src='banana';
常量计数=str=>
[…str].reduce((acc,val)=>(acc[val]?(acc[val]+):(acc[val]=1,acc),{});
console.log(count(src));
.as console wrapper{min height:100%}
为什么要使用嵌套循环?能否请您详细说明并给出正确的代码?您真的只需要obj[s]=(obj[s]| 0)+1;
在forEach
回调中。计数字符通常是用reduce
而不是forEach
完成的。请参阅以获取许多替代解决方案。只需放置obj[a[j]]=count;
退出for循环
为什么要使用嵌套循环?能否请您详细说明并给出正确的代码?您真的只需要obj[s]=(obj[s]| 0)+1;
在forEach
回调中。计数字符通常是用reduce
而不是forEach
完成的。请参阅以获取许多替代解决方案。只需放置obj[a[j]]=count;
跳出for循环
嗯,那真的很有帮助。非常感谢。那真的很有帮助。非常感谢。如果你不介意的话,我会让它更简洁一点。谢谢你的贡献。我明白了。如果你不介意的话,我会让它更简洁一点。谢谢你的贡献。我明白了