JavaScript-数字是否按顺序排列

JavaScript-数字是否按顺序排列,javascript,Javascript,我是一名刚参加过编码训练营的学生,我周五毕业。当我在寻找我的第一个职业机会时,我一直在回顾我们被赋予发展解决问题技能的一些早期Kata,我不得不说我被其中一些难倒了。我已经为这些问题编写了测试,并使用TDD尝试解决它们。语言是Javascript 有谁能帮我指出正确的方向吗。我已经写了4个测试,它通过了4个测试中的3个,我无法让它通过第3个测试,我不知道还有什么可以尝试 卡塔说明: areOrdered函数应将数字数组作为输入。 如果所有数字都按升序排列,则返回true;如果不按升序排列,则返回

我是一名刚参加过编码训练营的学生,我周五毕业。当我在寻找我的第一个职业机会时,我一直在回顾我们被赋予发展解决问题技能的一些早期Kata,我不得不说我被其中一些难倒了。我已经为这些问题编写了测试,并使用TDD尝试解决它们。语言是Javascript

有谁能帮我指出正确的方向吗。我已经写了4个测试,它通过了4个测试中的3个,我无法让它通过第3个测试,我不知道还有什么可以尝试

卡塔说明: areOrdered函数应将数字数组作为输入。 如果所有数字都按升序排列,则返回true;如果不按升序排列,则返回false。 空数组应返回false

我的测试:

const areOrdered = require("../katas/are-ordered");
const { expect } = require("chai");

describe.only("areOrdered", () => {
  it("returns a boolean", () => {
    const nums = [];
    const actualResults = areOrdered(nums);
    const expectedResults = false;
    expect(actualResults).to.equal(expectedResults);
  });

  it("returns false if passed an empty array", () => {
    const nums = [];
    const actualResults = areOrdered(nums);
    const expectedResults = false;
    expect(actualResults).to.equal(expectedResults);
  });

  it("returns true if the numbers array is in ascending order", () => {
    const nums = [1, 2, 3];
    const actualResults = areOrdered(nums);
    const expectedResults = true;
    expect(actualResults).to.equal(expectedResults);
  });
  it("returns false if the numbers array is not in ascending order", () => {
    const nums = [3, 1, 0, 2];
    const actualResults = areOrdered(nums);
    const expectedResults = false;
    expect(actualResults).to.equal(expectedResults);
  });
});
我的解决方案:

function areOrdered(nums) {
  if (nums.length === 0) {
    return false;
  }

  for (let i = 0; i < nums.length; i++) {
    if (!nums[i] < nums[i] + 1) {
      return false;
    } else if (nums[i] < nums[i] + 1) {
      return true;
    }
  }
}
3次通过(11毫秒) 1失败

1) 有序 如果数字数组按升序排列,则返回true:

  AssertionError: expected false to equal true
  + expected - actual

  -false
  +true 

您可以从第二个项目进行迭代,并检查之前的项目和实际项目

如果值不符合顺序,则返回
false

最后返回
true

函数已排序(nums){
if(nums.length==0)返回false;
for(设i=1;i=nums[i])返回false;
}
返回true;
}
console.log(areOrdered([]);//假的
console.log(按顺序排列([1,2,3]);//真的

console.log(按顺序排列([3,1,0,2]);//false
我会这样做:

function areOrdered(nums) {
  if (nums.length === 0) return false;

  let sorted = nums.concat().sort((a, b) => a-b);
  let isSorted = true;
  for(let i in sorted)
    if(sorted[i] !== nums[i] && isSorted) isSorted = false;
  return isSorted;
}

只需复制数组并使用array.sort()进行排序,然后将其与原始数组进行比较。

nums[i]+1
应该是
nums[i+1]
(进行检查以确保没有溢出数组的末尾)。此外,括号是您的朋友<代码>!nums[i]
非常不同!(nums[i]
。你有kata的链接吗?
优先于
谢谢,我有一种感觉,它可能是一些简单的东西,比如括号或语法错误。我想我只是盯着它看太久了,看不见它。谢谢大家的意见,我很快就会再次尝试。谢谢大家的建议。很高兴知道解决这个问题的方法不止一种。
function areOrdered(nums) {
  if (nums.length === 0) return false;

  let sorted = nums.concat().sort((a, b) => a-b);
  let isSorted = true;
  for(let i in sorted)
    if(sorted[i] !== nums[i] && isSorted) isSorted = false;
  return isSorted;
}