Возможно ли создать массив с HTMLelement ключем и строкой в значении?

По типу:

let arr = [
div.Something: 5 2
]

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

Автор решения: Vasiliy Rusin

Для реализации того что Вы описали в задаче лучше всего использовать Map.

Например, если в HTML у нас есть такой unorder list:

<ul>
  <li class="list"></li>
  <li class="list"></li>
  <li class="list"></li>
</ul>

В JS мы создаем новый Map, в отличии от Array, в котором ключи это всегда индексы элемента в массиве, или Object в котором ключи это всегда строки.

В Map ключами может быть любая сущность, в том числе и другой объект. HTMLElement это как раз тоже объект.

const map = new Map();

const lists = document.getElementsByClassName("list");

for (const list of lists) {
    map.set(list, [1, 2]);
}

console.log(map.get(lists[0]));

const map = new Map();

const lists = document.getElementsByClassName("list");

for (const list of lists) {
    map.set(list, [1, 2]);
}

console.log(map.get(lists[0]));
<ul>
  <li class="list"></li>
  <li class="list"></li>
  <li class="list"></li>
</ul>

→ Ссылка