要检查一个数组是否已排序,可以遍历数组并比较相邻元素的大小。如果数组是升序排列的,则所有相邻元素都会大于等于前一个元素。如果数组是降序排列的,则所有相邻元素都会小于等于前一个元素。
这里我们使用常规 for
循环,实现效果如下:
const isSorted = (array) => {
for (let i = 1; i < array.length; i++) {
if (array[i] < array[i - 1]) return false
}
return true
}
上面函数检查的是数组升序排列。
如果要检查数组是否已降序排列,可以修改函数以检查相邻元素是否小于等于前一个元素,或者可以使用 JavaScript 内置的 Array.prototype.reverse
方法将数组反转后使用上述函数进行检查。
function isReverseSorted(array) {
return isSorted(array.reverse())
}
需要注意,Array.prototype.reverse
方法会直接修改原数组,因此在使用完后可能需要再次反转数组以保持原有顺序。
使用示例:
let arr1 = [1, 2, 3, 4, 5]
let arr2 = [1, 2, 4, 3, 5]
let arr3 = [5, 4, 3, 2, 1]
let arr4 = [5, 4, 3, 1, 2]
isSorted(arr1) // true
isSorted(arr2) // false
isReverseSorted(arr3) // true
isReverseSorted(arr4) // false
// 改变原数组
arr3 // [1, 2, 3, 4, 5]
arr4 // [2, 1, 3, 4, 5]