Как получить объект из входных данных в ванильном JavaScript - PullRequest
0 голосов
/ 19 марта 2019

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

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

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

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);

Ответы [ 3 ]

0 голосов
/ 19 марта 2019

Вы должны использовать объект 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" />
0 голосов
/ 19 марта 2019

Вы можете просмотреть значения с помощью 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" />
0 голосов
/ 19 марта 2019

Используйте 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"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...