我正在嘗試根據 arrayB 中的所有日期檢查來自 arrayA 的日期,如果來自 arrayA 的日期早于 arrayB 中的任何日期,則回傳。
不太確定我是否能夠根據陣列中的其他值檢查陣列中的值。
const dateA = arrayA.map((item) => {
return item.date;
const dateB = arrayB.map((item) => {
return item.date;
if (dateA >= dateB) {
return 'date is older'}
陣列A中的日期
[ 2022-02-21T05:00:00.000Z ]
arrayB 中的日期
[
2022-02-18T05:00:00.000Z,
2022-02-10T05:00:00.000Z,
2022-02-19T05:00:00.000Z
]
任何幫助,將不勝感激!
uj5u.com熱心網友回復:
您的問題有點令人困惑,并且您的問題存在矛盾,因此我將做出一些假設:
我假設您實際上想知道中的所有日期
arrayA是否晚于(較新)或相同(而不是舊于)中的所有日期arrayB。(我基于你展示的事實>=而不是<你的偽代碼,并且還展示了一個例子,就是這種情況。)我假設您的陣列包含
Date物件。(我基于看起來像是從inspect-like 輸出復制的陣列內容 - 即使您的偽代碼看起來好像date內部有帶有屬性的物件。)
如果這些假設有些地方不太正確,那么無論如何都應該很容易接受這個概念并根據您的實際需要稍微調整一下。例如,如果您確實想確保其中的所有日期arrayA實際上都較舊,那么您只需在我的示例中交換兩個陣列(或反轉所有操作)。可能您可能希望最后的條件顛倒 - 我不太確定您真正想要什么,因為這個問題非常模棱兩可。
因此,對于可能的解決方案:您當然可以arrayA將 ( ) 中的每個日期與arrayB( if (arrayA.every(dateA => arrayB.every(dateB => dateA >= dateB)))) 中的每個日期進行比較,但這會不必要地低效,因為必須進行arrayA.length * arrayB.length比較。
一個更有效的選擇是計算最舊的日期arrayA和最新的日期,arrayB然后只比較它們(這將導致大約arrayA.length arrayB.length比較 - 注意加號而不是時間):
const oldestDateValueA = Math.min(...arrayA.map(Number))
const newestDateValueB = Math.max(...arrayB.map(Number))
if (oldestDateValueA >= newestDateValueB) {
console.log('Condition fulfilled!')
}
(我們可以Math.max通過不在第二個陣列上使用,而是與第一個陣列的最舊日期進行比較來進一步優化這一點.every,本質上是兩種方式的混合,如果第二個陣列中的日期較早,這將導致更少的比較已經無法進行比較了-但是,在我看來,這使閱讀和理解變得更加困難,并且改進比我們之前所做的要小得多。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/431164.html
