const arrA = ['2022-03-01', '2022-03-02', '2022-03-03']
const arrB = ['2022-01-20', '2022-02-22', '2022-03-03' ...more ]
我想計算 A 中的元素出現在 B 中的次數(兩個陣列中都沒有重復項)
let matchCounter = 0
arrA.forEach((date) => {
if(arrB.includes(date)) matchCounter = 1
if(!arrB.includes(date)) matchCounter = matchCounter
})
如果其他兩個 arrA 元素不匹配,這應該回傳 1 的結果,并且確實如此。
當多個 arrA 日期與 arrB 中的一個元素匹配時,就會出現問題。然后,我仍然得到一個 1
uj5u.com熱心網友回復:
arrA.forEach((date) => if(arrB.includes(date)) matchCounter )
成功了。但是我最初寫的不是出于某種原因
uj5u.com熱心網友回復:
你寫matchCounter = 1而不是matchCounter = 1.
uj5u.com熱心網友回復:
const arrA = ['2022-03-01', '2022-03-02', '2022-03-03']
const arrB = ['2022-01-20', '2022-02-22', '2022-03-03', '2022-03-03', '2022-03-02']
const result = arrA.reduce((a, c) => a arrB.filter(i => i == c).length, 0);
console.log(result);
這應該result等于 3 嗎?
uj5u.com熱心網友回復:
只需使用.filter()來回傳匹配項,回呼就可以使用.includes().
const matchCount = (arrA, arrB) => {
const matches = arrA.filter(date => arrB.includes(date));
...
這是訣竅:
...
return matches.length;
};
回傳匹配的長度而不是實際的陣列。
const arrA = ['2022-04-20', '2022-05-12', '2022-03-13'];
const arrB = ["2022-05-12", "2022-03-17", "2022-04-10", "2022-03-30", "2022-03-28", "2022-05-04", "2022-04-15", "2022-04-13", "2022-04-16", "2022-04-20"];
const matchCount = (array1, array2) => {
const matches = array1.filter(str => array2.includes(str));
return matches.length;
};
console.log(matchCount(arrA, arrB));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/447503.html
標籤:javascript 数组 日期 前锋
上一篇:嘗試使用ApacheNi-Fi通過SSL連接到TimescaleCloud時出錯
下一篇:ValueError:時間資料“2021-07-1911:48:03.357 00”與格式“%Y-%m-%d%H:%M:%S.%f%Z”不匹配(匹配)
