我是最近的编程训练营学生,我星期五毕业。我在寻找自己的第一个职业机会时,我一直在回顾一些早期的技巧,这些技巧可以帮助我们提高解决问题的能力,我不得不说我对其中的一些感到沮丧。我已经针对这些问题编写了测试,并使用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;
}
}
}
结果:
已订购
✓ returns a boolean
✓ returns false if passed an empty array
1) returns true if the numbers array is in ascending order
✓ returns false if the numbers array is not in ascending order
3次通过(11ms) 1个失败
1)已订购 如果numbers数组按升序返回,则返回true:
AssertionError: expected false to equal true
+ expected - actual
-false
+true
答案 0 :(得分:1)
您可以从第二个项目进行迭代,并检查之前的项目和实际项目。
如果值顺序不正确,请返回IDisposable
。
最后返回false
。
true
答案 1 :(得分:1)
我会这样:
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()进行排序,然后将其与原始数组进行比较。