请考虑这个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;

如果||运算符“真”,则返回左侧的内容(“假”值false0''nullundefinedNaN除外),否则返回右侧的内容。

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

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

10-06 08:22