检查列表是否已排序

时间:2018-08-15 09:19:39

标签: javascript arrays sorting

我找到了这个简单的解决方案,它检查列表是否已排序。

myArray.every((val, i, arr) => !i || (val >= arr[i - 1]));

在这种情况下!i是什么意思?

3 个答案:

答案 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]的值。
!i0th元素返回true。 对于其他元素,返回val >= arr[i - 1]