我不确定是什么结果[i]? 我只想了解为什么此代码使用这种方式?
function countChars(string, character) {
var result = string;
var count = 0;
var i = 0;
while ( i < string.length) {
if (result[i] === character) {
count = count + 1 ;
}
我猜想这种方式可能有用。
string [i]
有没有理由将result [i]放在其中?
function countChars(string, character) {
var result = string;
var count = 0;
var i = 0;
while ( i < string.length) {
if (result[i] === character) {
count = count + 1 ;
}
result.slice(0,1);
i++
}
return count;
}
console.log(
countChars("hello","h") // >> 1
)
答案 0 :(得分:1)
正在复制,因此原始字符串不会在可能具有破坏性的代码中进行修改-在您的代码中为结果。切片不会修改结果,因此代码实际上不会更改结果且该语句无用
这是可能发生的事情
function countChars(string, character) {
var copy = string;
var count = 0;
while (copy.length) {
if (copy[0] === character) {
count++;
}
copy = copy.slice(1); // destructive
}
console.log("String:",string,"Copy:",copy); // copy empty here
return count;
}
console.log(
countChars("hello","h") // >> 1
)
答案 1 :(得分:0)
您可以复制string
并删除第一个字符,直到长度为零。然后退出循环。不需要i
,因为您只需要检查索引零处的第一个字符即可。
function countChars(string, character) {
var rest = string,
count = 0;
while (rest.length) {
if (rest[0] === character) {
count++;
}
rest = rest.slice(1);
}
return count;
}
console.log(countChars("hello", "h")); // 1