【发布时间】:2023-03-09 15:51:01
【问题描述】:
谁能解释下面的代码? inputWords 应该是一个包含各种单词的数组,这个函数应该返回一个数组,其中包含一个单词在 inputWords 中出现的次数。
即。 var inputWords = ['Apple', 'Banana', 'Apple', 'Durian', 'Durian', 'Durian']
console.log(countWords(inputWords))
// =>
// {
// Apple: 2,
// Banana: 1,
// Durian: 3
// }
我了解 Reduce 函数的作用,但 resultObj[word] = ++resultObj[word] || 是什么1;在做什么?
非常感谢:)
function countWords(inputWords) {
return inputWords.reduce(function(resultObj, word) {
resultObj[word] = ++resultObj[word] || 1;
return resultObj;
}, {});
}
module.exports = countWords;
【问题讨论】:
-
如果存在则增加
resultObj[word],否则将其初始化为1。 -
||是逻辑或运算符,如果左边是假值,将选择 1 -
@vladkras
reduce实际上是应用一个函数将集合聚合为单个值的操作,在这种情况下,一个包含多个单词的数组到一个对象计算每个单词出现在大批。增量是实际计数。 -
也可以写成
resultObj[word] = (resultObj[word] || 0) + 1,这样可以更好地表达意图。
标签: javascript arrays reduce