Как получить объект из входных данных в vanilla javascript

#javascript #object #input

#javascript #объект #ввод

Вопрос:

Например, у меня есть 3 входных данных

 <input type="text" name="color" value="blue"/>
<input type="text" name="flavor" value="acid"/>
<input type="text" name="name" value="jack"/>
  

И a мне нужно получить что-то вроде этого

 const obj = {color:'blue', flavor:'acid', name:'jack};
  

Я пытался использовать цикл for, но я получаю массив, а не объект

 var obj = [];
var x = document.querySelectorAll('input');
for (var i = 0; i < x.length; i  ) {
  obj.push(x[i].value)
}
console.log(obj);
  

Ответ №1:

Вы можете перебирать значения с помощью forEach и обновлять объект.
Примечание: Также можно использовать reduce для непосредственного создания объекта

 const obj = {};
const inputs = document.querySelectorAll("input");
inputs.forEach(({ name, value }) => {
 obj[name] = value
})

console.log(obj);  
 <input type="text" name="color" value="blue" />
<input type="text" name="flavor" value="acid" />
<input type="text" name="name" value="jack" />  

Ответ №2:

Используйте объект JavaScript вместо массива. Чтобы создать ключ объекта, вам просто нужно объявить его в квадратных скобках [ ] и присвоить значение.

 var obj = {};
var x = document.querySelectorAll('input');
for (var i = 0; i < x.length; i  ) {
  obj[x[i].name] = x[i].value
}
console.log(obj);  
 <input type="text" name="color" value="blue"/>
<input type="text" name="flavor" value="acid"/>
<input type="text" name="name" value="jack"/>  

Ответ №3:

Вы должны использовать объект JavaScript с динамическими именами свойств:

 var obj = {};
document.querySelectorAll("input").forEach(input => obj[input.name] = input.value);
console.log(obj);  
 <input type="text" name="color" value="blue" />
<input type="text" name="flavor" value="acid" />
<input type="text" name="name" value="jack" />  

Комментарии:

1. В чем разница по отношению к другим ответам?

2. Я изменю его @Lolpez.