Javascript 检查列表是否已排序

Javascript 检查列表是否已排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我发现了这个简单的解决方案,它检查列表是否已排序 myArray.every((val, i, arr) => !i || (val >= arr[i - 1])); 什么事!我的意思是在这种情况下 if i = 0, !i = true if i = 1, !i = false 如果i=0,则arr[i-1]没有值。 !对于第0个元素,我返回true。 对于其他元素,返回val>=arr[i-1] 如果i=0,则arr[i-1]没有值。 !对于第0个元素,我返回true。 对于

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

myArray.every((val, i, arr) => !i || (val >= arr[i - 1]));
什么事!我的意思是在这种情况下

if i = 0, !i = true
if i = 1, !i = false
如果i=0,则arr[i-1]没有值。 !对于第0个元素,我返回true。 对于其他元素,返回val>=arr[i-1]

如果i=0,则arr[i-1]没有值。 !对于第0个元素,我返回true。 对于其他元素,返回val>=arr[i-1]

!我为第一个元素返回一个真值,因为后面的检查只适用于索引1或更大的值,因为前面的元素是减法的

!i || val >= arr[i - 1]
^^                       index 0           returns true
      ^^^^^^^^^^^^^^^^^  index 1 ... n - 1 checks condition
!!我为第一个元素返回一个真值,因为后面的检查只适用于索引1或更大的值,因为前面的元素是减法的

!i || val >= arr[i - 1]
^^                       index 0           returns true
      ^^^^^^^^^^^^^^^^^  index 1 ... n - 1 checks condition

检查列表是否从代码myArray.everyval,i,arr=>中排序!i | | val>=arr[i-1];你期待!i | | val>=arr[i-1]返回真值

如果你没有用!然后,对于数组索引0,您将得到arr[i-1]为未定义,这将导致val>=arr[i-1]为false,这在实际情况下应该为true。因此,要防止我们使用!我相信当我们这样做的时候,我们会变得真实!i | | val>=arr[i-1]as!0值的i将为真,val>=arr[i-1]将为假,因此true | | false将为真

因此,要使逻辑正常工作,您需要进行检查

以下是一个示例:

用!我 变量a=[1]; var i=0; var res=!i | | 10>=a[i-1]
console.logres 检查列表是否从代码myArray.everyval,i,arr=>中排序!i | | val>=arr[i-1];你期待!i | | val>=arr[i-1]返回真值

如果你没有用!然后,对于数组索引0,您将得到arr[i-1]为未定义,这将导致val>=arr[i-1]为false,这在实际情况下应该为true。因此,要防止我们使用!我相信当我们这样做的时候,我们会变得真实!i | | val>=arr[i-1]as!0值的i将为真,val>=arr[i-1]将为假,因此true | | false将为真

因此,要使逻辑正常工作,您需要进行检查

以下是一个示例:

用!我 变量a=[1]; var i=0; var res=!i | | 10>=a[i-1]
console.logres;你们查过每个回调的第二个参数是什么吗?是的,我知道它是索引号。但我不知道这个假索引号的目的是什么。你们查过每个回调的第二个参数是什么吗?是的,我知道它是索引号。但是我不知道这个虚假的索引号的目的是什么。清晰的answear!谢谢大家!@西蒙特。很高兴帮助您:清晰的answear!谢谢大家!@西蒙特。很高兴帮忙:谢谢!这很有帮助,谢谢!这很有帮助。