我正在处理这个挑战问题,我正在努力解决这个问题。我可以让它恢复字符串中的位置,但不是实际的字母数。任何帮助表示赞赏。
问题 -
编写一个名为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);
答案 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]]++;
}