Как проверить, равны ли вложенные массивы друг другу
У меня есть генератор лабиринта, который генерирует стены на «ячейку». Это означает, что есть повторяющиеся стены - например, левая стена одной ячейки точно такая же, как правая стена ячейки слева. Я хочу создать лабиринт и извлечь данные в другую программу в формате [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))