Перебор многомерных массивов JS

Имеется многомерный массив:

let arr = [];
arr.push[ 1, 3, 'N6IG0UeNmNpk1NWvAAAC'];
arr.push[ 2, 20, 'IPWjginzUgBv3XNVAAAC'];

И так далее, значений 5. 1-ое значение, это ID. При новом подключении пользователя нужно пройтись по этому массиву и если такого ID ещё не было, занести, например как:

let userId = data.userId;
arr.push[userId, 0, 'nzUgBv3XNG0UeNmNp'];

Перепробовал много вариантов и с for и с forEach, но никак не могу придти к правильному решению. Может кто уже решал подобную задачу, подскажет.

Заранее спасибо!


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

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

Если я правильно понял, можно так:

let arr = [];
arr.push([ 1, 3, 'N6IG0UeNmNpk1NWvAAAC']);
arr.push([ 2, 20, 'IPWjginzUgBv3XNVAAAC']);

let userId = 3;
if (!arr.find(([id]) => id === userId)) arr.push([userId, 0, 'nzUgBv3XNG0UeNmNp']);

userId = 2;
if (!arr.find(([id]) => id === userId)) arr.push([userId, 0, '...']);

console.log(arr);

Но если не хотите каждый раз проходить по всему массиву, лучше параллельно создавать структуру типа Object или Set с уже занесёнными идентификаторами, у этих структур проверка наличия элемента занимает меньше времени.

→ Ссылка