Как проверить, равны ли вложенные массивы друг другу

У меня есть генератор лабиринта, который генерирует стены на «ячейку». Это означает, что есть повторяющиеся стены - например, левая стена одной ячейки точно такая же, как правая стена ячейки слева. Я хочу создать лабиринт и извлечь данные в другую программу в формате [x, y, type], где type равен 0 — по горизонтали или 1 — по вертикали. Мне удалось преобразовать данные, но теперь у меня есть массив с дубликатами. (например, [[0, 0, 0], [0, 1, 0], [0, 0, 0]...], и вы можете видеть, что элементы индекса 0 и 2 равны.) Я хочу удалить эти дубликаты .

Я попытался создать функцию removeDuplicates(), которая принимает массив.

      function removeDuplicates(arr) {
    tempArr = [];
    for(var i = 0; i < arr.length; i ++) {
        var found = false;
        for(var j = 0; j < tempArr.length; j ++) {
            if(tempArr[j].equals(arr[i])) {
                found = true;
            }
        }
        if(found === false) {
            tempArr.push(arr[i]);
        }
    }
}

Когда я запускаю код, он говорит мне, что tempArr[j].equals не является функцией. Почему? Что мне нужно изменить, чтобы проверить равные массивы? Оператор == тоже не работал.

1 ответ

Предполагая, что массив в arr[i] имеет только один уровень глубины (без вложенных вещей), вы можете попробовать

      if (tempArr[j].every((el, k) => arr[i][k] === el))
Другие вопросы по тегам