gpt4 book ai didi

javascript - 变量在影响其值后始终为 0

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:37 27 4
gpt4 key购买 nike

我正在尝试用字符串创建 HashMap ,该映射采用以下形式:

{ 'char': charOccurrence }

这是我的代码:

function compress(text) {
let hash = new Map();
let prev = [];
for (let i = 0; i < text.length; i++) {
let count = 0;
prev.push(text[i]);
for (let j = i+1; j < text.length; j++) {
// if (prev.indexOf(text[j]) !== -1) break;
if (text[i] === text[j]) {
count += 1;
console.log(count);
}
}
hash.set(text[i], count);
}
console.log(hash);
}

compress('aaaaahhhheaaadeee');

问题是 count 总是 0,我不知道这怎么可能,即使在 for 循环中影响了 value。这就是我从这段代码中得到的:

Map { 'a' => 0, 'h' => 0, 'e' => 0, 'd' => 0 }

我在这里缺少什么?

最佳答案

您正在覆盖之前的结果。

每次看到“a”时,您都从 0 开始计数并读取字符串的其余部分,然后覆盖 hash 中的任何内容成为你找到的总数。字符串中最后一个“a”的总计数为 0。每个字母都会发生这种情况。

prev,你没有做任何事情,可能是为了防止这种情况发生。 (您可以跳过已经数过的字母。)

这是一个更简单(也更快)的方法:

function compress(text) {
let hash = new Map();
for (let i = 0; i < text.length; i++) {
hash.set(text[i], (hash.get(text[i]) || 0) + 1);
}
return hash;
}

console.log(compress('aaaaahhhheaaadeee'));
// Map { 'a' => 8, 'h' => 4, 'e' => 4, 'd' => 1 }

关于javascript - 变量在影响其值后始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45775238/

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