带有for循环的Javascript对象迭代

带有for循环的Javascript对象迭代,javascript,object,iteration,hashtable,Javascript,Object,Iteration,Hashtable,我试图计算字符串中出现唯一字符的次数。 但我被困在对象迭代中,无论同一个字符多次出现多少次,它都只返回1: 函数allUniqueCha(word){ var-wordObj={}; var wordArray=word.split([,]); forEach(函数(c){ wordObj[c]=+1; }); log(wordArray); console.log(wordObj); } allUniqueCha(“泡泡”)您写道: wordObj[c]=+1; 使用一些格式: wor

我试图计算字符串中出现唯一字符的次数。 但我被困在对象迭代中,无论同一个字符多次出现多少次,它都只返回1:

函数allUniqueCha(word){
var-wordObj={};
var wordArray=word.split([,]);
forEach(函数(c){
wordObj[c]=+1;
});
log(wordArray);
console.log(wordObj);
}
allUniqueCha(“泡泡”)
您写道:

 wordObj[c]=+1;
使用一些格式:

 wordObj[c] = +1;
您总是将
+1
分配给该值,此处没有增量。试一试

 wordObj[c] = (wordObj[c] || 0)+1;

应该是

var wordArray = word.split("");
函数allUniqueCha(word){
var-wordObj={};
var wordArray=word.split(“”);
forEach(函数(c){
wordObj[c]=(wordObj[c]| | 0)+1;
});
log(wordArray);
console.log(wordObj);
}
allUniqueCha(“泡泡”)
您写道:

 wordObj[c]=+1;
使用一些格式:

 wordObj[c] = +1;
您总是将
+1
分配给该值,此处没有增量。试一试

 wordObj[c] = (wordObj[c] || 0)+1;

应该是

var wordArray = word.split("");
函数allUniqueCha(word){
var-wordObj={};
var wordArray=word.split(“”);
forEach(函数(c){
wordObj[c]=(wordObj[c]| | 0)+1;
});
log(wordArray);
console.log(wordObj);
}

allUniqueCha(“泡泡”)
这个小猪背上了你最初帖子的思路。这里有一种方法可以解决您正在寻找的问题

function allUniqueCha(word){
  let wordArray = word.split([,]);
  return wordArray.reduce((result, element) => {
    result[element] = result[element] + 1 || 1;
    return result;
  }, {})
}

这个小猪背在你最初的帖子的思路上。这里有一种方法可以解决您正在寻找的问题

function allUniqueCha(word){
  let wordArray = word.split([,]);
  return wordArray.reduce((result, element) => {
    result[element] = result[element] + 1 || 1;
    return result;
  }, {})
}
当您这样做时:

wordObj[c] = +1;
您正在为属性指定值
+1
。您要做的是将该值增加1,因此:

wordObj[c] += 1;
但是,最初的
wordObj[c]
不存在,因此您尝试递增undefined,这将抛出一个错误。因此,您必须测试该属性是否存在,如果不存在,则创建它并初始化它

函数allUniqueCha(word){
var-wordObj={};
var wordArray=word.split([,]);
forEach(函数(c){
如果(!wordObj.hasOwnProperty(c)){
wordObj[c]=0;
}
wordObj[c]+=1;
});
log(wordArray);
console.log(wordObj);
}
allUniqueCha(“泡泡”)
当您:

wordObj[c] = +1;
您正在为属性指定值
+1
。您要做的是将该值增加1,因此:

wordObj[c] += 1;
但是,最初的
wordObj[c]
不存在,因此您尝试递增undefined,这将抛出一个错误。因此,您必须测试该属性是否存在,如果不存在,则创建它并初始化它

函数allUniqueCha(word){
var-wordObj={};
var wordArray=word.split([,]);
forEach(函数(c){
如果(!wordObj.hasOwnProperty(c)){
wordObj[c]=0;
}
wordObj[c]+=1;
});
log(wordArray);
console.log(wordObj);
}

allUniqueCha(“泡泡”)
wordObj[c]的初始值是多少?当您将
+1
赋值给它时会发生什么?
wordObj[c]
的初始值是多少?将
+1
分配给它时会发生什么?