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



function allUniqueCha(word) {
  var wordObj = {};
  var wordArray = word.split([, ]);
  wordArray.forEach(function(c) {
    wordObj[c] = +1;
  });
  console.log(wordArray);
  console.log(wordObj);
}

allUniqueCha("Bubble")





输出为:{B:1,u:1,b:1,l:1,e:1},但键“ b”的期望值应为2。

最佳答案

你写了:

 wordObj[c]=+1;


使用某些格式:

 wordObj[c] = +1;


您总是将+1分配给该值,此处没有增量。尝试

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




var wordArray = word.split([, ]);


应该是

var wordArray = word.split("");




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

allUniqueCha("Bubble")

关于javascript - 带for循环的Javascript对象迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42262280/

10-11 20:28