比较数组中的元素值,并返回布尔值

Comparing Elements Values In An Array, and returning Boolean

任何人都可以帮助我我快到了我可以让下面的前 2 个测试的代码 return true,但接下来的 2 个测试的代码不是 return false,我需要做什么是检查数组中的所有数字是否按升序排列,因此每个元素编号都大于数组长度的最后一个。有任何想法吗?亲切的问候乔恩。

 Test.expect(inAscOrder([1, 2, 4, 7, 19])
 Test.expect(inAscOrder([1, 2, 3, 4, 5])
 Test.expect(!inAscOrder([1, 6, 10, 18, 2, 4, 20])
 Test.expect(!inAscOrder([9, 8, 7, 6, 5, 4, 3, 2, 1])

function inAscOrder(arr) {

let result = false;

for (let i = 0; i <= arr.length; i++) {
for (let k = 0; k <= arr.length; k++) {
    if (arr[i] < arr[k+1]) {
     result = true;
            
    } 
   }
  }

return 结果; }

试试这个,

您可以改用函数式方式。

const inAscOrder = arr => arr.slice(1).every((elem,i) => elem > arr[i]);
console.log(inAscOrder([1,2,5]));

您非常接近回答

function inAscOrder(arr) {
    let result = true;

    for (let i = 0; i <= arr.length; i++) {
        if (arr[i] > arr[i+1]) {
            result = false;
            break;   
        }
    }
    return result; 
}

比较两个数组的最简单方法是将它们转换为字符串,然后比较字符串。

const isAscending = (arr) => arr.join("") == arr.sort((a, b) => a - b).join("");

console.log(isAscending([1, 2, 4, 7, 19]));
console.log(isAscending([1, 2, 3, 4, 5]));
console.log(isAscending([1, 6, 10, 18, 2, 4, 20]));
console.log(isAscending([9, 8, 7, 6, 5, 4, 3, 2, 1]));

对于数组中的每个元素,return如果它是第一个元素或大于前一个元素,则为真。

const isAscending = (arr) => arr.every((el, i, arr) => i === 0 || el > arr[i - 1]);

console.log(isAscending([1, 2, 4, 7, 19]));
console.log(isAscending([1, 2, 3, 4, 5]));
console.log(isAscending([1, 6, 10, 18, 2, 4, 20]));
console.log(!isAscending([9, 8, 7, 6, 5, 4, 3, 2, 1]));