"+ alphabet);正在打印未定义-6ren"> "+ alphabet);正在打印未定义-我是 js 新手。 我正在分析一个简单的代码。 不确定它是如何工作的。 这是第一次这一行 console.log("alphabet--->"+ alphabet);正在打印未定义的计数[alphab-6ren">
gpt4 book ai didi

javascript - 第一次这一行 console.log ("alphabet--->"+ alphabet);正在打印未定义

转载 作者:行者123 更新时间:2023-11-30 14:39:48 26 4
gpt4 key购买 nike

  • 我是 js 新手。
  • 我正在分析一个简单的代码。
  • 不确定它是如何工作的。
  • 这是第一次这一行 console.log("alphabet--->"+ alphabet);正在打印未定义的计数[alphabet]--->undefined
  • 你能告诉我为什么它的打印未定义吗?
  • 它第二次在这一行打印 3 console.log(counts[alphabet] + 1);
  • 但它应该打印 2,因为 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.logs() 中的一个只有一个小错误.

让我们来看看到底发生了什么。

设置变量。

var str = "aaabbccccddd";
var arr = str.split("");
var counts = {};

循环 arr , 等于 ['a','a','a','b','b','c','c','c','c','d','d','d'] .

for (var i = 0; i < arr.length; i++) {

第一次进入循环。设置alphabetarr[i]这是arr[0]这是 'a' .

var alphabet = arr[i];

counts此时仍然只是一个空对象 ( {} )。这意味着 counts[alphabet]这是 counts['a']是'undefined '.在 JavaScript 中,if(undefined)if(false)相同, 所以我们跳到 else block 。

if (counts[alphabet]) 

在 else block 中,我们设置 counts[alphabet] ,即 counts['a'] , 至 1 .因此 counts变成 {'a': 1} .

counts[alphabet] = 1;

除了几个 console.log()在循环内没有其他事情可做。所以i0 更改至 1 (因为 i++ )。 i < arr.length这是 1 < 12还是true所以我们将再次遍历循环体。

for (var i = 0; i < arr.length; i++) {

第二次进入循环。设置alphabetarr[i]这是 arr[1]这是 'a' .

var alphabet = arr[i];

和以前一样,counts[alphabet]counts['a']但是现在counts['a']有一个值。在最后一个循环结束时,counts['a']被设置为 1 .在 JavaScript 中,除 0 之外的任何数字是“真实的”。这次我们不会跳转到 else block 。我们将执行 if block 。

if (counts[alphabet]) 

我们递增 counts[alphabet]这是 counts['a'] .之前是1 .现在是2 .

counts[alphabet] = counts[alphabet] + 1;

现在我们来到给出意外输出的行。根据上面的行,counts[alphabet]这是 counts['a']现在是2 .和 2 + 13 , 当然。此行将输出 3 .

console.log(counts[alphabet] + 1);

如果我明白你要做什么,就没有必要在这里加 1 了。删除 + 1你应该得到预期的输出。

console.log(counts[alphabet]);

关于javascript - 第一次这一行 console.log ("alphabet--->"+ alphabet);正在打印未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49841970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com