为了账号安全,请及时绑定邮箱和手机立即绑定

TypeScript 的数字数组总是排序的——即使它不是

TypeScript 的数字数组总是排序的——即使它不是

慕丝7291255 2023-06-15 17:37:16
我制作了一个函数来检查数字数组是否已排序:const isSorted = (values: number[]) => {    return values === values.sort((a, b) => a - b);};isSorted([4, 2, 8, 7, 3, 10, 1, 5, 9, 6]); // Returns `true`如您所见,true无论输入是什么,该函数都会返回,那么我怎样才能使该函数正常工作呢?我在用:打字稿 v4.1.2ts节点v9.0.0节点.js v14.15.1
查看完整描述

4 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

你是在values跟自己比较。因此true。values您将必须手动检查排序数组中给定索引上的每个元素是否与同一索引上数组中的每个元素相同。是这样的:


const isSorted = (values: number[]) => {

    let sorted = values.slice().sort((a, b) => a - b)

    return isEqual(values, sorted);

};

查看完整回答
反对 回复 2023-06-15
?
撒科打诨

TA贡献1934条经验 获得超2个赞

在示例中,共享值与自身进行比较。为了达到预期效果,您需要手动实施排序。



查看完整回答
反对 回复 2023-06-15
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

sort方法就地对数组的元素进行排序,当然会返回原始数组。

如果您希望它保持未排序状态,则需要复制原始数组。


查看完整回答
反对 回复 2023-06-15
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

遍历数组并检查是否有任何值大于下一个值。这应该是判断它是否已排序的最快方法。


const isSorted = (values: number[]) => {

  let sorted = true;


  for (int i = 0; i < values.length - 1; i++) {

    if (values[i] > values[i+1]) {

      sorted = false;

      break;

    }

  }


  return sorted;

}


查看完整回答
反对 回复 2023-06-15
  • 4 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号