Написать функцию которая принимает два аргумента

Написать функцию которая принимает два аргумента (две одинаковые массивы). Функция возвращает true если все элементы похожи и false если не похожи

я написал это но не работает, плюс если не сложно можете обьяснить?

let x = [1, 3, 5, 8]
let y = [1, 3, 5, 8, 4]

function equal(x, y) {
  if (x == y) {
    console.log(true)
    return true;
  } else if (x !== y) {
    console.log(false)
    return false;
  }
}

equal()


Ответы (1 шт):

Автор решения: vsemozhebuty

Любые объекты в JS (в том числе массивы) при сравнении не будут равны, даже если у них одно содержимое. Поэтому нужно проверять поэлементно.

Вот вариант решения для простых случаев.

let a = [1, 3, 5, 8];
let b = [1, 3, 5, 8];
let c = [1, 3, 5, 7];
let d = [1, 3, 5, 8, 4];

function equal(x, y) {
  return x.length === y.length &&
         x.every((element, index) => y[index] === element);
}

console.log(equal(a, b));
console.log(equal(a, c));
console.log(equal(a, d));

Однако он не будет работать, если:

  1. Нужно сравнивать рекурсивно (например, элементами массивов могуть быть другие массивы).
  2. Требуется нестрогое сравнение (например, элементы 1 и '1' должны считаться равными).

По условиям задачи не совсем понятно, требуется ли учёт этих особенностей. Если да, уточните.

→ Ссылка