javascript计算数组中的重复项

标签 javascript

请考虑这个JS函数

我看过这个similar问题,但听不懂。

function a (ResultArray){
    var counts={};
    for ( p = 0; p < ResultArray.length; p++){            
        counts[ResultArray[p]] = (counts[ResultArray[p]] + 1) || 1;            
    }
    return counts;
}

var arr = ["a","b","c","d","a","b","e"];        
var res = new a(arr);
console.log(res)

它工作正常并提供计数。我需要了解它是如何给出计数的,特别是 (counts[ResultArray[p]] + 1) || 1; 部分。 +1|| 在做什么。

最佳答案

我想主要的困惑来自这一行:

counts[ResultArray[p]] = (counts[ResultArray[p]] + 1) || 1;

|| 运算符返回左侧的内容,如果它是“真实的”(除“虚假”值 false 之外的任何内容,0''nullundefinedNaN),否则返回右侧。

如果 ResultArray[p] 不在 counts 内,则 counts[ResultArray[p]] 将为 undefined。因为 undefined + 1NaN|| 的左边是“falsy”,所以它会返回右边的 1

否则,counts[ResultArray[p]] 将是我们已经看到 ResultArray[p] 的次数,我们将添加 1 到它。在这种情况下,左侧将是“真实的”,它将返回新的计数。

关于javascript计算数组中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44953236/

相关文章:

javascript - Npm install `vue@latest` 错误用户代理

javascript - 生成的 Javascript 不执行

javascript - 如何将 JWT 保存到 localStorage

javascript - Anime.js - 如何将不同时间的动画结合起来?

javascript - 文本区域中空行的值是多少?

javascript - 在回调函数中传递参数的简单说明

javascript - 是否有 JavaScript 的依赖管理工具/库?

javascript - 寻找更有效的方法来设置和更改顺序 Backbone 模型属性

javascript - 如果 Javascript 中的 "with"语句创建了一个新的作用域,为什么这个闭包每次都不包含新作用域中的新的 "x"?

javascript - 渴望在 Rails 中为 AngularJS 加载 HTML/erb 模板