Javascript 使用比较运算符检查与指定顺序有关的数组内容

Javascript 使用比较运算符检查与指定顺序有关的数组内容,javascript,Javascript,我需要一个用整数检查数组的函数。整数必须是升序或降序。这取决于具体情况 我想出了以下解决方案: const-areVersionNumbersInExpectedOrder=(aNums,sExpectedOrder=“升序”)=>{ 放过=假; if(sExpectedOrder==“升序”){ 如果(aNums[0]aNums[2]){ 通过=正确; } } 回程通过 }; const versionNumbersAscending=[1,2,3]; console.log( `结果升序:

我需要一个用整数检查数组的函数。整数必须是升序或降序。这取决于具体情况

我想出了以下解决方案:

const-areVersionNumbersInExpectedOrder=(aNums,sExpectedOrder=“升序”)=>{
放过=假;
if(sExpectedOrder==“升序”){
如果(aNums[0]aNums[1]&&aNums[1]>aNums[2]){
通过=正确;
}
}
回程通过
};
const versionNumbersAscending=[1,2,3];
console.log(
`结果升序:${areVersionNumbersInExpectedOrder(versionNumbersAscending,“升序”)}`);
常量versionNumbersDescending=[3,2,1];
console.log(

`结果降序:${areVersionNumbersInExpectedOrder(versionNumbersDescending,“descending”)}`)
您可以采用更短的方法,使用
每一个
和回调,具体取决于预期的顺序

const-areVersionNumbersInExpectedOrder=(aNums,sExpectedOrder=“升序”)=>{
常数
订单={
升序:(b,i,{[i-1]:a}=>!i|a!i|a>b
};
每(订单[sExpectedOrder])返回aNums;
};
log(版本号为nexpectedorder([1,2,3],“升序”);

log(一个版本号为nexpectedorder([3,2,1],“降序”)
您可以采用更短的方法,使用
每一个
和回调,具体取决于预期的顺序

const-areVersionNumbersInExpectedOrder=(aNums,sExpectedOrder=“升序”)=>{
常数
订单={
升序:(b,i,{[i-1]:a}=>!i|a!i|a>b
};
每(订单[sExpectedOrder])返回aNums;
};
log(版本号为nexpectedorder([1,2,3],“升序”);

log(一个版本号为nexpectedorder([3,2,1],“降序”)像这样的东西怎么样:

const isSortedAscending=(v,i,a)=>i==0 | | v>=a[i-1];

const isSortedDescending=(v,i,a)=>i==0 | | v这样的东西怎么样:

const isSortedAscending=(v,i,a)=>i==0 | | v>=a[i-1];

const isSortedDescending=(v,i,a)=>i==0 | | v我认为这样更好:

const isInOrder = (arr, isAscending = true) => {
    let result = false;
    for (let i = 0; i < arr.length - 1; i++) {
        result = isAscending ? arr[i] <= arr[i + 1] : arr[i] >= arr[i + 1];
        if (!result) {
            return result;
        }
    }
    return result;
};
const-isInOrder=(arr,isAscending=true)=>{
让结果=假;
for(设i=0;i
我认为这样更好:

const isInOrder = (arr, isAscending = true) => {
    let result = false;
    for (let i = 0; i < arr.length - 1; i++) {
        result = isAscending ? arr[i] <= arr[i + 1] : arr[i] >= arr[i + 1];
        if (!result) {
            return result;
        }
    }
    return result;
};
const-isInOrder=(arr,isAscending=true)=>{
让结果=假;
for(设i=0;i
您当前的解决方案取决于您在将数组传递给函数之前了解数组的长度。当数组长度/长度小于3个元素时会发生什么情况?您的代码将中断或不返回真正的比较。您应该考虑使用
for循环
迭代数组中的每个元素,并根据其顺序是
降序
还是
升序
与上一个或下一个元素进行比较。此外,如果两个元素相等,它们仍然可以通过排序测试,因此1、2、2、3等。2<2将失败,即使排序是正确的。@RyanWilson感谢您的提示。但是在我需要函数的测试场景中,它总是3个元素。因为它将基于静态测试数据。虽然目前可能是这样,但您可能希望尝试并学习尽可能动态地编写代码,以解决将来可能出现问题的问题。如果您使用
for loop
解决方案,您就不必担心在以后数组变大或变小时会对其进行更改。@RyanWilson是的,您所说的关于更动态的内容是正确的。我真的应该重复我当前的实现……您当前的解决方案取决于您在将数组传递给函数之前了解数组
长度。当数组长度/长度小于3个元素时会发生什么情况?您的代码将中断或不返回真正的比较。您应该考虑使用
for循环
迭代数组中的每个元素,并根据其顺序是
降序
还是
升序
与上一个或下一个元素进行比较。此外,如果两个元素相等,它们仍然可以通过排序测试,因此1、2、2、3等。2<2将失败,即使排序是正确的。@RyanWilson感谢您的提示。但是在我需要函数的测试场景中,它总是3个元素。因为它将基于静态测试数据。虽然目前可能是这样,但您可能希望尝试并学习尽可能动态地编写代码,以解决将来可能出现问题的问题。如果您使用
for loop
解决方案,您就不必担心在以后数组变大或变小时会对其进行更改。@RyanWilson是的,您所说的关于更动态的内容是正确的。我真的应该重复我当前的实现…非常感谢。我真的很喜欢你的解决方案。这个主意很好。但不幸的是,我必须暗示:如果数组中某个地方的顺序不正确,它就会失败。并且连续元素的顺序又是正确的。请用这个数组试试:constnums=[1,9,3,4,5,6];你是李