Сейчас у меня есть файл json, содержащий список транспортных средств. У меня есть страница поиска, которая позволяет пользователям фильтровать инвентарь с помощью флажков, таких как марка, модель, цвет и т. Д. c ..
Мне нужно передать значения флажков в виде массива. Например, если я выберу флажки для Mustang и Camaro, это должно быть 'Model' => ['Mustang', 'Camaro']
.
Я попытался создать 2 массива. Один для ключей (Марка, Модель, Цвет), et c ... и другой для каждого значения (Мустанг и Камаро). Некоторые значения могут иметь один элемент, некоторые - несколько. Например, если нам нужны все красные Мустанги и Камаро, массив должен выглядеть так:
['Model' => ['Mustang', 'Camaro'],Color' => ['Red']];
Или просто красные Мустанги:
['Model' => ['Mustang'],Color' => ['Red']];
Я могу oop каждый из флажки, и я попытался поместить все имена флажков (data.id) в качестве ключа и второй массив (data.value) в качестве значений. Если ключ существует, добавьте каждое из значений, имеющих один и тот же ключ.
var kv=[]; // Keys
var vv=[]; // Array of the values for each key.
$("[name='checkBoxItem']").each(function (index, data) {
if (data.checked) {
if(!(data.id in kv)){ // Is always called.
alert("Does't exist, adding : " + data.value);
kv.push(data.id);
vv.push(data.value);
} else {
vv.push(data.value);
}
checked.push({[kv]: vv});
}
});
Мой код возвращает:
Array ( [selected_values] => Array([0] => Array ([Make] => Array([0] => Mustang))))
Что близко, но if(!(data.id in kv))
всегда вызывается, не позволяя мне добавить несколько вариантов выбора.
Прошу прощения, если кодеры блокируют то, что я должен был сделать.