Сейчас мы с вами реализуем задачу на практическое применение коллекций Map. Пусть у нас на странице есть инпуты - сделаем так, чтобы каждый инпут хранил историю своих изменений. А также реализуем перемещение по этой истории с помощью стрелок.
Исходники кода
<input><br><br>
<input><br><br>
<input>
let inputs = document.querySelectorAll('input');
let map = new Map;
for (let input of inputs) {
map.set(input, {values: [], index: -1});
input.addEventListener('blur', function() {
let {values, index} = map.get(this);
values.push(this.value);
map.set(this, {values, index: index + 1});
this.value = '';
console.log(map.get(this));
});
input.addEventListener('keydown', function(event) {
//console.log(event.key);
if (event.key == 'ArrowLeft') {
let {values, index} = map.get(this);
if (index > - 1) {
this.value = values[index];
map.set(this, {values, index: index - 1});
}
event.preventDefault();
}
if (event.key == 'ArrowRight') {
let {values, index} = map.get(this);
if (index < values.length - 1) {
this.value = values[index + 1];
map.set(this, {values, index: index + 1});
}
event.preventDefault();
}
});
}