#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.