【问题标题】:Comparing Elements Values In An Array, and returning Boolean比较数组中的元素值,并返回布尔值
【发布时间】:2021-11-04 11:05:48
【问题描述】:

谁能帮助我快到了我可以让代码在下面的前 2 个测试中返回 true,但在接下来的 2 个测试中不返回 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;
            
    } 
   }
  }

返回结果; }

【问题讨论】:

  • 你很亲密,see this answer。
  • 你可以用函数式的方式让生活更轻松

标签: javascript arrays boolean


【解决方案1】:

你已经很接近回答了

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; 
}

【讨论】:

  • 感谢 Armand,我首先使用了单个 for 循环路线,但我一直想念的是如何使用 [] 中的 i+1 将数组 i 的当前迭代与下一个元素进行比较。非常感谢您的帮助,非常感谢乔恩。
【解决方案2】:

试试这个,

你可以改用函数式的方式。

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

【讨论】:

  • 对于给定的输入返回 false
  • @Mohitkumar 编辑了答案,现在通过了所有测试
【解决方案3】:

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

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]));

【讨论】:

    【解决方案4】:

    对于数组中的每个元素,如果它是第一个元素或大于前一个元素,则返回 true。

    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]));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      相关资源
      最近更新 更多