函数接受一个字符串并返回一个字母和出现次数的对象-javascript - Homework Warning

时间:2016-12-18 19:01:45

标签: javascript object

我正在处理这个挑战问题,我正在努力解决这个问题。我可以让它恢复字符串中的位置,但不是实际的字母数。任何帮助表示赞赏。

问题 -

编写一个名为letterCount的函数,它接受一个字符串并返回一个 带有字母和出现次数的对象。

我的代码到目前为止 -

var stringCount = "Hello";

function letterCount(string) {
   var stringObject = {};
   for (var i = 0; i < string.length; i++) {
     stringObject[string[i]] = [i];
   }

   return stringObject;
}

letterCount(stringCount);

1 个答案:

答案 0 :(得分:2)

你几乎所有事情都做对了,唯一的问题就是分配部分,你需要这样做:

var stringCount = "Hello";

function letterCount(string) {
  var stringObject = {};
  for (var i = 0; i < string.length; i++) {
    stringObject[string[i]] = ((stringObject[string[i]]) ? stringObject[string[i]] : 0) + 1;
  }
  return stringObject;
}

console.log(letterCount(stringCount));

从技术上讲,行中会发生什么:

stringObject[string[i]] = ((stringObject[string[i]]) ? stringObject[string[i]] : 0) + 1;
  • 程序检查对象中是否存在该特定索引。
  • 如果它不存在(未定义undefined),则会指定0
  • 如果存在,则采用相同的值。
  • 它将1添加到上述值。

以上相同的行可以这样写:

// Check if the current key exists.
if (typeof stringObject[string[i]] == "undefined") {
  // If it doesn't, initialise it 1.
  stringObject[string[i]] = 1;
} else {
  // If it exists, increment it.
  stringObject[string[i]] = stringObject[string[i]] + 1;
  // Another way:
  // stringObject[string[i]]++;
}