我是最近的编码训练营学生,我周五毕业。虽然我正在寻找我的第一个职业机会,但我一直在回顾我们为培养解决问题的技能而获得的一些早期 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;
}
}
}
结果:
有序
✓ 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 次通过(11 毫秒)
1 次失败
1) 已订购
如果 numbers 数组按升序排列,则返回 true:
AssertionError: expected false to equal true
+ expected - actual
-false
+true
最佳答案
您可以从第二个项目迭代并检查之前的项目和实际项目。
返回 false
如果值不按顺序排列。
最后返回 true
.
function areOrdered(nums) {
if (nums.length === 0) return false;
for (let i = 1; i < nums.length; i++) {
if (nums[i - 1] >= nums[i]) return false;
}
return true;
}
console.log(areOrdered([])); // false
console.log(areOrdered([1, 2, 3])); // true
console.log(areOrdered([3, 1, 0, 2])); // false
关于JavaScript - 数字是否有序 Kata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60213832/