我制作了一个函数来检查数字数组是否已排序: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);
};

慕勒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;
}
添加回答
举报
0/150
提交
取消