Ката: ссылка
Мое решение:
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
, если оба массива имеют []
. Но в описании ката сказано иное:
Если a или b равны нулю (или 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;
}