Я пытаюсь проверить, существует ли подмассив в массиве, чтобы я мог отказаться или избежать добавления.
Например
Предположим, у меня есть такой массив
[
[-5, 0, 5], [-5, 2, 3],
[-3, 0, 3,], [-3, 1, 2],
[-1, -1, 2], [-1, 0, 1]
]
и получил еще одну пару, как
[-3, 1, 2] добавить, но он уже доступен в существующих данных, поэтому необходимо проверить и не добавлять.
Что я пробовал до сих пор
let mapped = result.map(item => item.join());
let match = `${item1},${item2},${item3}`; // coming items => item1, item2, item3
if (mapped.includes(match)){
...
} else {
...
}
Можно ли это использовать или есть лучший способ проверить это, когда у нас есть огромное количество данных?
Вы можете изучить использование наборов. По определению элементы в наборе должны быть уникальными.
@NinaScholz Если я использую карту, то как проверить наличие нового повторяющегося массива на карте, поскольку это массив



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используя методы массива .find() и .every():
const
arr = [
[-5, 0, 5], [-5, 2, 3],
[-3, 0, 3,], [-3, 1, 2],
[-1, -1, 2], [-1, 0, 1]
],
input = [-3, 1, 2],
isIn = (a,b) => b.find(x => x.every((y,i) => y === a[i]))?.length > 0;
console.info( isIn(input, arr), arr.length );
isIn(input, arr) || arr.push(input);
console.info( arr.length );
isIn([-3, 1, -2], arr) || arr.push([-3, 1, -2]);
console.info( arr.length );Я бы просто перебрал ваш массив и проверил, равен ли элемент элементу, который вы хотите добавить. Предполагая, что вы имеете дело только с числами, вы можете проверить это, преобразовав массив в строку.
const data = [
[-5, 0, 5],
[-5, 2, 3],
[-3, 0, 3],
[-3, 1, 2],
[-1, -1, 2],
[-1, 0, 1]
];
const toAdd = [-3, 1, 2];
const isRowIncludedInMatrix = (matrix, row) =>
matrix.some(r => r.toString() === row.toString());
if (!isRowIncludedInMatrix(data, toAdd)) // => false -> don't push
data.push(toAdd);Если это единственные данные, с которыми вам приходится работать, лучше всего будет провести простое сравнение.
Функции some() и every() завершатся досрочно:.
function addIfNotExists(arrays, newArray) {
if (!arrays.some(x => x.length === newArray.length && x.every((e, i) => e === newArray[i])))
arrays.push(x);
}
как часто вы хотели бы добавить еще один массив? Вы пытались использовать хэш-карту?