JavaScript检查属性数组是否按升序排序

JavaScript检查属性数组是否按升序排序,javascript,Javascript,您好,我需要一种更好的方法来检查属性数组是否按升序排序。 我使用下面的 数组可以具有动态长度属性 必须使用DrawCD属性对数组进行排序 我想在不使用for循环的情况下以更好的方式完成它,如果可能的话,使用数组原型函数 pevDrawInfo=[{ 提款:16281, 提款时间:14:55:00, winCol:2, 奇偶:0 }, { 提款:16280, 提款时间:14:50:00, winCol:2, 奇偶:0 }, { 附图:16279, 提款时间:14:45:00, winCol:2,

您好,我需要一种更好的方法来检查属性数组是否按升序排序。 我使用下面的 数组可以具有动态长度属性

必须使用DrawCD属性对数组进行排序 我想在不使用for循环的情况下以更好的方式完成它,如果可能的话,使用数组原型函数

pevDrawInfo=[{ 提款:16281, 提款时间:14:55:00, winCol:2, 奇偶:0 }, { 提款:16280, 提款时间:14:50:00, winCol:2, 奇偶:0 }, { 附图:16279, 提款时间:14:45:00, winCol:2, 奇偶:0 }, { 附图:16278, 提款时间:14:40:00, winCol:2, 奇偶:0 } ]; 对于i=0;i<2;i++{ 如果pevDrawInfo[i].drawCD-pevDrawInfo[i+1].drawCD>0 排序=假 其他的 排序=真 } console.logsorted您可以检查并获取属性进行检查

var pevDrawInfo=[{drawCD:16281,drawTime:14:55:00,winCol:2,oddEven:0},{drawCD:16280,drawTime:14:50:00,winCol:2,oddEven:0},{drawCD:16279,drawTime:14:45:00,winCol:2,oddEven:0},{drawCD:16278,drawTime:14:40:00,winCol:2,oddEven:0}]; console.logpevDrawInfo.everyb,i,{[i-1]:a}=>!a | | a.drawCDa-b; console.logpevDrawInfo.everyb,i,{[i-1]:a}=>!a | | a.drawCD var pevDrawInfo=[{drawCD:16281,drawTime:14:55:00,winCol:2,oddEven:0},{drawCD:16280,drawTime:14:50:00,winCol:2,oddEven:0},{drawCD:16279,drawTime:14:45:00,winCol:2,oddEven:0},{drawCD:16278,drawTime:14:40:00,winCol:2,oddEven:0}]; console.logpevDrawInfo.everyb,i,{[i-1]:a}=>!a | | a.drawCDa-b;
console.logpevDrawInfo.everyb,i,{[i-1]:a}=>!a | | a.drawCD 可重复使用:

将其抽象为一个函数,该函数接受一个数组和一个键,并检查每个对象的键属性是否为升序

使其在动态长度下工作,i<2将不起作用

更快

不确定您的代码是否可以改进,它已经启用,并且没有使用不必要的变量/循环

但是,您可以提前退出:如果发现一个条目正在下降,则不必检查其余条目

可读性更强

看起来已经很好了,老实说,比答案要好

 function isAscending(array, key) {
   for (let i = 1; i < array.length; i++) {
     if (array[i - 1][key] - array[i][key] > 0)
      return false;
   }
   return true;
 }
不使用for循环的更好方法


为什么??它是否使您的代码更具可读性?在这种情况下:绝对不要把尼娜的答案拿给他看,并问他答案是什么。因为它比较慢?不。实际上,它比滥用一个数组助手来做他们不想做的事情要快。

更好通常意味着可重用、更快或更可读:

可重复使用:

将其抽象为一个函数,该函数接受一个数组和一个键,并检查每个对象的键属性是否为升序

使其在动态长度下工作,i<2将不起作用

更快

不确定您的代码是否可以改进,它已经启用,并且没有使用不必要的变量/循环

但是,您可以提前退出:如果发现一个条目正在下降,则不必检查其余条目

可读性更强

看起来已经很好了,老实说,比答案要好

 function isAscending(array, key) {
   for (let i = 1; i < array.length; i++) {
     if (array[i - 1][key] - array[i][key] > 0)
      return false;
   }
   return true;
 }
不使用for循环的更好方法

为什么??它是否使您的代码更具可读性?在这种情况下:绝对不要把尼娜的答案拿给他看,并问他答案是什么。因为它比较慢?不可以。实际上,这比滥用数组帮助程序来做他们不想做的事情要快。

您可以先将对象数组映射到所需值数组。然后将其与排序数组进行比较

var pevDrawInfo=[{drawCD:16281,drawTime:14:55:00,winCol:2,oddEven:0},{drawCD:16280,drawTime:14:50:00,winCol:2,oddEven:0},{drawCD:16279,drawTime:14:45:00,winCol:2,oddEven:0},{drawCD:16278,drawTime:14:40:00,winCol:2,oddEven:0}]; 函数IsSortDarr,键{ arr=arr.mapx=>x[键] 返回JSON.stringifyarr===JSON.stringifyarr.sorta,b=>b-a } 您可以首先将对象的数组映射到所需值的数组。然后将其与排序数组进行比较

var pevDrawInfo=[{drawCD:16281,drawTime:14:55:00,winCol:2,oddEven:0},{drawCD:16280,drawTime:14:50:00,winCol:2,oddEven:0},{drawCD:16279,drawTime:14:45:00,winCol:2,oddEven:0},{drawCD:16278,drawTime:14:40:00,winCol:2,oddEven:0}]; 函数IsSortDarr,键{ arr=arr.mapx=>x[键] 返回JSON.stringifyarr===JSON.stringifyarr.sorta,b=>b-a } console.logisSortedpevDrawInfo,drawCD您可以使用reduce函数:

!!pevDrawInfo.reducen,item=>item.drawCD>=n.drawCD&&item

P evDrawInfo=[{ 提款:16281, 提款时间:14:55:00, winCol:2, 奇偶:0 }, { 提款:16288, 提款时间:14:50:00, winCol:2, 奇偶:0 }, { 提款:16288, 提款时间:14:45:00, winCol:2, 奇偶:0 }, { 提款:16298, 提款时间:14:40:00, winCol:2, 奇偶:0 } ]; 控制台。日志!!pevDrawInfo.reducen,item=>item.drawCD>=n.drawCD&&item您可以使用reduce函数:

!!pevDrawInfo.reducen,item=>item.drawCD>=n.drawCD&&item

pevDrawInfo=[{ 提款:16281, 提款时间:14:55:00, winCol:2, 奇偶:0 }, { 提款:16288, 提款时间:14:50:00, winCol:2, 奇偶:0 }, { 提款:16288, 提款时间:14:45:00, winCol:2, 奇偶:0 }, { 提款:16298, 提款时间:14:40:00, winCol:2, 奇偶:0 } ]; 控制台。日志!!pevDrawInfo.reducen,item=>item.drawCD>=n.drawCD&&item我的方式。。。可读性更强

变量 pevDrawInfo=[ {drawCD:16281,drawctime:14:55:00,winCol:2,oddEven:0} ,{drawCD:16280,drawctime:14:50:00,winCol:2,oddEven:0} ,{drawCD:16279,drawctime:14:45:00,winCol:2,oddEven:0} ,{drawCD:16278,drawctime:14:40:00,winCol:2,oddEven:0} ]; var=true; pevDrawInfo.reducea,c=>{ sorted=sorted&&a.drawCD>c.drawCD;//严格的降序改为>=,<或我的方式…更具可读性

变量 pevDrawInfo=[ {drawCD:16281,drawctime:14:55:00,winCol:2,oddEven:0} ,{drawCD:16280,drawctime:14:50:00,winCol:2,oddEven:0} ,{drawCD:16279,drawctime:14:45:00,winCol:2,oddEven:0} ,{drawCD:16278,drawctime:14:40:00,winCol:2,oddEven:0} ]; var=true; pevDrawInfo.reducea,c=>{
sorted=sorted&&a.drawCD>c.drawCD;//严格的降序改为>=,<或更好的方式?更少的代码行?更少的CPU周期?更少的内存?我们需要一个客观的衡量标准来判断答案,否则问题将以主要基于意见的方式结束。此外,如果需要排序,为什么不进行排序,以防万一我更新了我的re任务。我不习惯对它排序。这必须从API请求返回排序,我需要检查是否排序更好如何排序?更少的代码行?更少的CPU周期?更少的内存?我们需要一个客观的衡量标准来判断答案,否则问题将以主要基于意见的方式结束。此外,如果需要排序,为什么不对其进行排序以防万一,我更新了我的请求。我不想对它排序。这必须从API请求返回排序,我需要检查是否排序