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