请考虑这个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
,''
,null
,undefined
和NaN
除外),否则返回右侧的内容。如果
ResultArray[p]
不在counts
内,则counts[ResultArray[p]]
将为undefined
。由于undefined + 1
是NaN
,所以||
的左侧是“falsy”,因此它将返回右侧的1
。否则,
counts[ResultArray[p]]
将是我们已经看到ResultArray[p]
的次数,我们将1
添加到其中。在这种情况下,左侧将是“真实的”,它将返回新的计数。