[英]Is there any way to count the number of times a certain value occurs in TypeScript array?
[英]value in array that occurs odd number of times- what is happening here?
當我檢查如何找到出現奇數次的數字時,我遇到了這段代碼。 我試圖理解一切,但我可以弄清楚。 請逐步說明正在發生的事情以及每個變量的含義。
謝謝!
function findOdd(A) {
let counts = A.reduce((p, n) => (p[n] = ++p[n] || 1, p), {});
return +Object.keys(counts).find(k => counts[k] % 2) || undefined;
reduce
是一種 Array 方法,它應該將數組減少為單個值,可以是數組本身、object 或任何平面變量類型reduce
將采用 function 和初始累積 object 作為參數p
。p[n]
,則逗號運算符 ( p[n] = ++p[n] || 1
) 的第一個表達式將返回1
,否則將遞增p[n]
並返回結果。 由於邏輯或 ( ||
) 的短路評估A.reduce(function (p, n) {
if (p[n]) {
p[n] = p[n] + 1
} else {
p[n] = 1
}
return p
}, {});
結果,您收到一個 object ,它計算數組中每個值的出現
然后你有return
語句,它將返回counts
的第一個鍵,它有一個奇數值
Object.keys
創建一個counts
鍵數組。% 2
) 是否為真值(在這種情況下不是零),然后返回該鍵。這里使用了2種方法,您需要了解。
減少:在這里閱讀https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
在這里找到閱讀: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
下面的語句使一個數字的 map 與它的出現
let counts = A.reduce((p, n) => (p[n] = ++p[n] || 1, p), {})
然后第二條語句在 map 中搜索出現奇數次的元素,如果沒有找到這樣的元素,則返回 undefined
return +Object.keys(counts).find(k => counts[k] % 2) || undefined
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.