【发布时间】:2020-05-28 19:42:53
【问题描述】:
卡塔:link
我的解决方案:
function comp(array1, array2) {
let result;
if (Array.isArray(array1) && Array.isArray(array2) && array1.length && array2.length) {
result = true;
const squares = array2.map(e => Math.sqrt(e));
squares.forEach((e) => {
if (array1.includes(e)) return;
result = false;
});
} else {
result = false
}
return result;
}
我不想要其他解决方案。我想弄清楚为什么我的测试没有通过所有测试。 (两次测试失败,但我看不到哪个)
如果两个数组都是[],我怀疑测试需要true。但 Kata 的描述另有说明:
如果 a 或 b 为 nil(或 null 或 None),则问题没有意义,因此返回 false。
我们将不胜感激。
基于答案的工作解决方案:
function comp(array1, array2) {
let result;
if (Array.isArray(array1) && Array.isArray(array2)) {
result = true;
const sortedArray1 = array1.sort((a, b) => a - b);
const squares = array2.map(e => Math.sqrt(e)).sort((a, b) => a - b);
squares.forEach((e, i) => {
if (sortedArray1[i] === e) return;
result = false;
});
} else {
result = false
}
return result;
}
【问题讨论】:
-
您从 kata 提供的描述谈到了
null值,而您怀疑是空数组。两者不一样。你测试过你的怀疑吗? -
在我看来
nil或null与[]不同。 -
如果我从
if语句中删除&& array1.length && array2.length,它会再通过一个测试。我认为我的怀疑是正确的,但它仍然在一项测试中失败。假设它对空数组期望为真,我会玩弄它。
标签: javascript arrays math