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

我制作了一个函数来检查数字数组是否已排序:


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.2

ts节点v9.0.0

节点.js v14.15.1


慕丝7291255
浏览 180回答 4
4回答

FFIVE

你是在values跟自己比较。因此true。values您将必须手动检查排序数组中给定索引上的每个元素是否与同一索引上数组中的每个元素相同。是这样的:const isSorted = (values: number[]) => {    let sorted = values.slice().sort((a, b) => a - b)    return isEqual(values, sorted);};

撒科打诨

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

翻翻过去那场雪

sort方法就地对数组的元素进行排序,当然会返回原始数组。如果您希望它保持未排序状态,则需要复制原始数组。

慕勒3428872

遍历数组并检查是否有任何值大于下一个值。这应该是判断它是否已排序的最快方法。const isSorted = (values: number[]) => {&nbsp; let sorted = true;&nbsp; for (int i = 0; i < values.length - 1; i++) {&nbsp; &nbsp; if (values[i] > values[i+1]) {&nbsp; &nbsp; &nbsp; sorted = false;&nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; }&nbsp; }&nbsp; return sorted;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript