我找到了这个简单的解决方案,它检查列表是否已排序。
myArray.every((val, i, arr) => !i || (val >= arr[i - 1]));
在这种情况下!i
是什么意思?
答案 0 :(得分:2)
!i
为第一个元素返回一个true
的值,因为后面的检查仅对索引1
和更高的索引有效,因为前一个元素被减了。
!i || val >= arr[i - 1]
^^ index 0 returns true
^^^^^^^^^^^^^^^^^ index 1 ... n - 1 checks condition
答案 1 :(得分:2)
要检查列表是否从代码myArray.every((val, i, arr) => !i || (val >= arr[i - 1]));
中排序,您希望!i || (val >= arr[i - 1])
返回true
值。
如果您未使用!i
,则对于数组索引0
,您将获得arr[i - 1]
作为undefined
,这将导致val >= arr[i - 1]
成为{{1 }},在实际情况下应为false
。因此,为了防止我们使用true
来获得!i
,当我们将true
设为!i || (val >= arr[i - 1])
的{{1}}时,我们会得到!i
并且0
将是true
,因此(val >= arr[i - 1])
将为您提供真实的信息。
因此,要使逻辑正常工作,您需要进行检查。
以下是示例:
使用!i
false
没有!i
true || false
答案 2 :(得分:1)
if i = 0, !i = true
if i = 1, !i = false
如果i = 0
没有arr[i - 1]
的值。
!i
对0th
元素返回true。
对于其他元素,返回val >= arr[i - 1]