gpt4 book ai didi

javascript - 如何以对象的形式访问javascript的reduce方法中的累加器

转载 作者:行者123 更新时间:2023-12-03 03:04:08 27 4
gpt4 key购买 nike

我一直在努力思考为什么这行不通。我们从 {} 开始,然后获取分割字符串数组的第一个元素。如果该对象属性存在,则将该值加一。如果没有,则创建该属性并将值设置为 1。任何帮助将不胜感激,因为我显然缺少有关 reduce 方法的某些内容。

const countCharacters = string => {
return string.split('').reduce((total, element) => {
if (total[element]) {
return total[element] += 1;
} else {return total[element] = 1}
},{});
};

最佳答案

如果您希望每次迭代中的 total 都是一个对象,则需要返回上一次迭代的对象

当前您的代码返回一个 Number =,这不是您开始时使用的对象

以下是您的代码所发生的情况

'abca'.split('').reduce((total, element) => {
if (total[element]) {
return total[element] += 1;
} else {
return total[element] = 1;
}
},{});

第一次迭代..total = {},element = 'a',返回total.a = 1(返回1)
第二次迭代 .. 总计 = 1,元素 = 'b' ...

所以,你想要这样的东西:

const countCharacters = string => {
return string.split('').reduce((total, element) => {
if (total[element]) {
total[element] += 1;
} else {total[element] = 1}
return total;
},{});
};

或者,更简洁一点

const countCharacters = string => string.split('').reduce((total, element) => {
total[element] = (total[element] || 0) + 1;
return total;
}, {});

或者,不那么简洁,但是一行行

const countCharacters = string => string.split('').reduce((total, element) => (total[element] = (total[element] || 0) + 1, total), {});

关于javascript - 如何以对象的形式访问javascript的reduce方法中的累加器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47245951/

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