У меня есть html-код, который выглядит следующим образом:
<input type = "text" name = "fruits[apple]" value = "true">
<input type = "text" name = "fruits[orange]" value = "false">
<input type = "text" name = "fruits[mango]" value = "true">
Как выбрать все фрукты и получить их соответствующие значения? Я ищу объект, подобный
{
"apple": true,
"orange": false,
"mango": true
}



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


Вы можете выбрать элементы, начинающиеся с fruits[, и сопоставить их значения:
const vals = $('[name^ = "fruits["]')
.map((_, input) => input.value)
.get();
console.info(vals);<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type = "text" name = "fruits[apple]" value = "true">
<input type = "text" name = "fruits[orange]" value = "false">
<input type = "text" name = "fruits[mango]" value = "true">Имейте в виду, что .value входных данных — это струны — если вместо этого вам нужны логические значения, вам придется сделать это более явно:
const vals = $('[name^ = "fruits["]')
.map((_, input) => input.value === 'true')
.get();
console.info(vals);<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type = "text" name = "fruits[apple]" value = "true">
<input type = "text" name = "fruits[orange]" value = "false">
<input type = "text" name = "fruits[mango]" value = "true">Если вам также нужна уникальная часть name, то reduce в объект пар ключ-значение (и также можете удалить jQuery при использовании reduce):
const vals = [...document.querySelectorAll('[name^ = "fruits["]')]
.reduce((a, { name, value }) => {
const key = name.match(/[^[]+(?=\])/)[0];
a[key] = value === 'true';
return a;
}, {});
console.info(vals);<input type = "text" name = "fruits[apple]" value = "true">
<input type = "text" name = "fruits[orange]" value = "false">
<input type = "text" name = "fruits[mango]" value = "true">Ух ты! Не могу поверить, ты очень быстрый. Мне придется подождать 12 минут, чтобы принять этот ответ. ржу не могу
Я хочу получить их в формате пары ключ-значение. фрукты['яблоко' => правда, 'манго' => ложь]
Вместо этого используйте reduce и можете также удалить jQuery на этом этапе.
@Tintin Я бы спросил, если вы хотите отформатировать их с помощью таких ключей объекта, зачем создавать html с именами, которые не такие?
Связано: stackoverflow.com/questions/33615334/…