как правильно формировать многомерный массив?
Формирую многомерный массив на основании значений полей формы:
formArray = $('#ApplicationSettings').serializeArray(); console.log('formArray'); console.log(formArray); optionsArray = {}; for (var key in formArray) { optionsArray[formArray[key]['name']] = formArray[key]['value']; } console.log('optionsArray'); console.log(optionsArray); в форме есть поля с названиями: dealStatusSelect[1], dealStatusSelect[2], dealStatusSelect[4]. Я хочу, чтобы они стали частями одного подмассива. но в массиве "optionsArray": Object { projectBeginSelect: "UF_CRM_1584163639", "dealCategorySelect[1]": "7", "dealStatusSelect[1]": "409", "dealStatusSelect[2]": "417", "dealStatusSelect[4]": "423" } то есть скрипт понимает dealCategorySelect[1] как отдельное имя переменной, а не как имя массива и ключ. Мне надо, чтобы в массиве было: Object { projectBeginSelect: "UF_CRM_1584163639", "dealCategorySelect":["1": "409", "2": "417", "4": "423"]} как это сделать? |
Не слишком понятно, чего вы хотите.
"dealCategorySelect[1]": "7" А куда потом эта 7 делась? А 1 куда? |
Цитата:
const old = { projectBeginSelect: "UF_CRM_1584163639", "dealCategorySelect[1]": "7", "dealStatusSelect[1]": "409", "dealStatusSelect[2]": "417", "dealStatusSelect[4]": "423" } const o = {} const a = Object.keys(old) a.forEach(key => { const i = key.indexOf('[') if (i === -1) { o[key] = old[key] return } const a = key.match(/[^\[\]]+/g) if (!o[a[0]]) o[a[0]] = [] o[a[0]][a[1] - 1] = old[key] }) alert(JSON.stringify(o)) |
Полный код:
<script type="text/javascript" src="jquery-3.3.1.min.js" ></script> <form id="ApplicationSettings"> <input type="text" name="dealStatusSelect[1]" value="1"> <input type="text" name="dealStatusSelect[2]" value="2"> <input type="text" name="dealStatusSelect[4]" value="4"> <input type="text" name="projectBeginSelect" value="UF_CRM_1584163639"> <input type="submit" > </form> <script> formArray = $('#ApplicationSettings').serializeArray(); console.log('formArray'); console.log(formArray); optionsArray = {}; for (var key in formArray) { optionsArray[formArray[key]['name']] = formArray[key]['value']; } console.log('optionsArray'); console.log(optionsArray); </script> <? $optionsArray = []; if(isset($_REQUEST)){ foreach($_REQUEST as $k => $v){ $optionsArray[$k] = $v; } } echo '<pre>'; print_r($optionsArray); echo '</pre>'; ?> Почему в PHP массив сразу выглядит как Array ( [dealStatusSelect] => Array ( [1] => 1 [2] => 2 [4] => 4 ) [projectBeginSelect] => UF_CRM_1584163639 ) а в JS надо извращаться. |
Чего то вы не договариваете.
Откуда берется "dealCategorySelect[1]": "7" ? Откуда вообще dealCategorySelect берется? |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 11:43. |