【发布时间】:2023-06-28 21:35:01
【问题描述】:
- 我是 js 新手。
- 我正在分析一个简单的代码。
- 不确定它是如何工作的。
- 第一次使用这一行 console.log("alphabet--->" + alphabet);正在打印未定义的计数[字母]--->未定义
- 你能告诉我为什么它的打印未定义。
- 第二次在这一行打印 3 console.log(counts[alphabet] + 1);
- 但它应该从 1+1 开始打印两个。
- 你们能否解释一下,以便我以后自己修复它。
- 在下面提供我的代码更改。
var str = "aaabbccccddd";
var arr = str.split("");
var counts = {};
for (var i = 0; i < arr.length; i++) {
var alphabet = arr[i];
console.log("alphabet--->" + alphabet);
console.log("counts[alphabet]--->" + counts[alphabet]);
if (counts[alphabet])
{
counts[alphabet] = counts[alphabet] + 1;
console.log("inside if--->");
//console.log("inside if--->" + counts[alphabet] + 1);
console.log(counts[alphabet] + 1);
}
else
{
counts[alphabet] = 1;
console.log("inside else--->");
console.log(counts[alphabet]);
//console.log("inside else--->" + counts[alphabet] + 1);
}
//counts[alphabet] = counts[alphabet] ? counts[alphabet] + 1 : 1;
}
console.log('a: ' + counts['a'] + '\n b: ' + counts['b'] + '\n c: ' + counts['c'] + '\n d: ' + counts['d'])
输出
alphabet--->a
counts[alphabet]--->undefined
inside else--->
1
alphabet--->a
counts[alphabet]--->1
inside if--->
3
alphabet--->a
counts[alphabet]--->2
inside if--->
4
alphabet--->b
counts[alphabet]--->undefined
inside else--->
1
alphabet--->b
counts[alphabet]--->1
inside if--->
3
alphabet--->c
counts[alphabet]--->undefined
inside else--->
1
alphabet--->c
counts[alphabet]--->1
inside if--->
3
alphabet--->c
counts[alphabet]--->2
inside if--->
4
alphabet--->c
counts[alphabet]--->3
inside if--->
5
alphabet--->d
counts[alphabet]--->undefined
inside else--->
1
alphabet--->d
counts[alphabet]--->1
inside if--->
3
alphabet--->d
counts[alphabet]--->2
inside if--->
4
a: 3
b: 2
c: 4
d: 3
-
在您的
console.log("counts[alphabet]--->" + counts[alphabet])
中,alphabet
之前设置为arr[i];
,所以您实际上是在说console.log("counts[alphabet]--->" + counts[arr[i]])
,它在计数中还不存在,所以它是未定义的 -
@ᔕᖺᘎᕊ 嘿,谢谢您的回复...您能给 cmets 带来难以理解的内容吗...请