请考虑这个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
到它。在这种情况下,左侧将是“真实的”,它将返回新的计数。
关于javascript计算数组中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44953236/