累计一个字符串中相同字符出现的个数

img

累计一个字符串中相同字符出现的个数
感觉没问题,但打印结果却是 “1”为什么

大意了,不过能省略return么

img

return 三目运算算什么。。。,好歹把pre返回了啊。。。

let str = "asdfsdfsadfadf";
let result = [...str].reduce((pre, cur)=>{
    pre[cur]?pre[cur]++:pre[cur]=1;
    return pre;
},{})
console.log(result)

或者

let str = "asdfsdfsadfadf";
let result = [...str].reduce((pre, cur)=>{
    return pre[cur]?pre[cur]++:pre[cur]=1,pre;
},{})
console.log(result)

【以下回答由 GPT 生成】

问题出在代码中的初始值不对,应该初始化为空对象{}而不是1。

修改代码如下所示:

let str = "asdasdadsdsfewre";
let result = [...str].reduce((pre, cur) => {
    if(!pre[cur]) {
        pre[cur] = 1;
    } else {
        pre[cur]++;
    }
    return pre;
}, {});

console.log(result);

修改后的代码会正确计算相同字符出现的个数。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^