У меня есть ряд входных данных, которые мне нужны для создания автоматического массива, если пользователь вводит, но когда я печатаю, он добавляет несколько элементов в массив.
Мне нужен такой результат
["10", "20", "30", "40", "50"]
но это происходит так, если я снова наберу
["10", "20", "30", "40", "50", "40", "30", "30", "30", "20"]
Как добавить только один раз при вводе?
const $input = document.querySelectorAll("input")
var items = [];
$input.forEach(item => {
item.addEventListener('input', () => {
boxdata = item.getAttribute('data-valor')
items.push(boxdata);
console.info(items);
})
})item 1: <input type = "text" data-valor = "10">
item 2: <input type = "text" data-valor = "20">
item 3: <input type = "text" data-valor = "30">
item 4: <input type = "text" data-valor = "40">
item 5: <input type = "text" data-valor = "50">а) используйте Set б) зачем вам нужно генерировать массив, когда пользователь вводит? Значение data-valor не меняется, не так ли?



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


Попробуйте с Задавать вот так:
const $input = document.querySelectorAll("input")
const items = new Set();
$input.forEach(item => {
item.addEventListener('input', () => {
boxdata = item.getAttribute('data-valor')
items.add(boxdata);
console.info([...items]);
})
})item 1: <input type = "text" data-valor = "10">
item 2: <input type = "text" data-valor = "20">
item 3: <input type = "text" data-valor = "30">
item 4: <input type = "text" data-valor = "40">
item 5: <input type = "text" data-valor = "50">
Хорошо, что происходит, когда значение ввода изменяется, оно запускает вашу функцию forEach.