簡體   English   中英

比較數組數組以檢查數組在 Javascript 中是否有序

[英]Compare an array of arrays to check if the arrays are in order in Javascript

我有一個這樣的數組數組, const array = [[1,5],[7,9],[10,14]]; 我需要檢查數組是否有序。

基本上,對於提供的數組,我需要將第一個數組的第二個值 (5) 與第二個數組的第一個值 (7) 進行比較,然后我將使用它來使表單無效。

如果數組還是按順序排列, const array = [[1,5],[6,9],[10,14]]; 它返回false,它通過驗證,如果不是,驗證失敗並返回true。

到目前為止,我已經做了這樣的事情。

const arrayIdxZeroValues = [];
const arrayIdxOneValues = []; 
array.forEach((arr,idx) => {
  arrayIdxZeroValues.push(arr[0])
  arrayIdxOneValues.push(arr[1])
})

這很好地分離了值。 然后我考慮使用.shift()刪除.shift()的第一個值,因為它永遠不需要比較,但我覺得這很麻煩,我不確定這是正確的方法。 也許.reduce()來比較輸出數組,但我無法讓它正常工作。

任何指導將不勝感激。

謝謝

您可以再次檢查實際值,將前一個數組的最后一個值加一並省略對第一個內部數組的檢查。

 const inOrder = array => array.every(([v], i, a) => !i || a[i - 1][1] + 1 === v); console.log(inOrder([[1, 5], [7, 9], [10, 14]])); console.log(inOrder([[1, 5], [6, 9], [10, 14]]));

使用Array.slice()創建一個從第二個子數組開始的數組。 使用Array.some()並檢查當前子數組的第二項是否等於或小於原始數組當前索引i處的子數組的第二項。 通過這種方式,您可以將第 2 次與第 1 次、第 3 次與第 2 次進行比較,依此類推。

false - 表示驗證通過true - 表示驗證失敗

 const isFailed = arr => arr.slice(1) .some(([n], i) => n !== arr[i][1] + 1) console.log(isFailed([[1,5],[6,9],[10,14]])) // false console.log(isFailed([[1,5],[7,9],[10,14]])) // true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM