gpt4 book ai didi

javascript - 减少方法不清楚

转载 作者:行者123 更新时间:2023-12-01 15:37:05 27 4
gpt4 key购买 nike

因此,我开始使用 reduce() 并意识到我可以将对象作为该方法的第一个元素传递,我看到了几个示例,这就是其中之一。

const arr = ['y', 'n', 'y', 'y', 'n'];

let test = arr2.reduce((sum, val) => {
sum[val] = (sum[val] || 0) + 1;
console.log('sum of val', sum[val], 'value', val)
return sum;
}, {})

我添加了那个控制台日志,这样我就可以看到发生了什么,但我无法弄清楚。方法是如何知道的?它如何在对象中添加 val(即 n 或 y),然后添加数组中存在的相同元素数量的总和。例如,该总和如何变为 {y: 20} - 假设数组中有 20 个 y。

我被它弄糊涂了,起初它看起来很简单,但我想它不是。

最佳答案

它不“知道”,你,这里:sum[val] = (sum[val] || 0) + 1;

sum 是第一次迭代中的空对象,然后是上一次迭代返回的对象(相同,由于 return sum;)。 val 是当前值('y''n')。

因此,在第一次迭代中,sum 将为 {}val 将为 'y' .然后这一行将设置 sum['y'] = 1 因为它本质上是 sum['y'] = (sum['y'] || 0) + 1 - 并且 sum['y'] 在这一点上是 undefined,所以你将有 (undefined || 0) + 1 这是 0 + 11

下一次 'n' 发生同样的情况。

第三次,sum['y'] 已经是之前的 1,因此表达式变为 (1 || 0) + 1 1 + 12,所以你得到 sum['y'] = 2

等等。

从调试器中查看此截屏视频:https://recordit.co/FVkXjW1b5y

关于javascript - 减少方法不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63057557/

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