Возникла проблема при заполнении многомерного массива, теряются значения во вложенных массивах. Портянку кода сократил на сколько возможно.... Пробую описать суть проблемы. Есть "Данные для заполнения массива". После загрузки страницы пробую сформировать двумерный массив, ожидаю получить "Ожидаемый результат". По факту получается "Полученный результат" - пропадают на втором уровне все значения, кроме последних.
Самого реального, проблемного кода - строк 10, смотреть проще тут:
http://jsbin.com/radikacofi/edit?html,output
ХЗ на javascript.ru код не запускается полностью, по ссылке - все работает ( вернее запускается, но результат печальный(((()
HELP
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ПРИМЕР-Вопрос</title>
<script src="http://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
</head>
<body class="">
<div id="sortingBTN">
<h2>Данные для заполнения массива</h2>
<h3>Срок поставки</h3>
<input type='checkbox' data-parametr='available' data-value='1' class='parametrSortingJS' > 1<i> всего 210 объектов</i><br>
<input type='checkbox' data-parametr='available' data-value='2' class='parametrSortingJS' > 2<i> всего 126 объектов</i><br>
<input type='checkbox' data-parametr='available' data-value='3' class='parametrSortingJS' > 3<i> всего 429 объектов</i><br>
<input type='checkbox' data-parametr='available' data-value='empty((' class='parametrSortingJS' > empty((<i> всего 3 объектов</i><br>
<h3>Цветовая гамма</h3>
<input type='checkbox' data-parametr='color' data-value='empty((' class='parametrSortingJS' > empty((<i> всего 325 объектов</i><br>
<input type='checkbox' data-parametr='color' data-value='3' class='parametrSortingJS' > 3<i> всего 179 объектов</i><br>
<input type='checkbox' data-parametr='color' data-value='5' class='parametrSortingJS' > 5<i> всего 32 объектов</i><br>
<input type='checkbox' data-parametr='color' data-value='4' class='parametrSortingJS' > 4<i> всего 173 объектов</i><br>
<input type='checkbox' data-parametr='color' data-value='2' class='parametrSortingJS' > 2<i> всего 55 объектов</i><br>
<input type='checkbox' data-parametr='color' data-value='1' class='parametrSortingJS' > 1<i> всего 4 объектов</i><br>
</div>
<script>
// проблема START
$(function()
{
var arrData = [];
$('#sortingBTN input.parametrSortingJS').each(function(indxInput, elementInput)
{ // Собираем пары параметр/значение
parametr = $(elementInput).data('parametr');
value = $(elementInput).data('value');
if( arrData.indexOf( parametr ) == -1 )
{ // нет ключа в массиве, создаем
arrData[parametr] = [];
}
if( arrData[parametr].indexOf( value ) == -1 )
{ // нет ключа в массиве, создаем, заполнякм
arrData[parametr][value] = 0;
}
});
$('#control').html(print_r( arrData, 0, 1 ));
});
// Проблема END
function print_r(arr, level, html)
{ // Контрольный вывод массива
if(!html) lt = "\n"; else lt = "<br>";
var print_red_text = "";
if(!level) level = 0;
var level_padding = "";
for(var j=0; j<level+1; j++) level_padding += " ";
if(typeof(arr) == 'object') {
for(var item in arr) {
var value = arr[item];
if(typeof(value) == 'object') {
print_red_text += level_padding + "'" + item + "' :" + lt;
print_red_text += print_r(value,level+1, html);
}
else
print_red_text += level_padding + "'" + item + "' => \"" + value + "\"" + lt;
}
}
else print_red_text = "===>"+arr+"<===("+typeof(arr)+")";
return print_red_text;
}
</script>
<div style="color:green">
<h2>Полученный результат</h2>
<div id="control"></div>
</div>
<h2>Ожидаемый результат:</h2>
['available']<br>
['1'] = 0<br>
['2'] = 0<br>
['3'] = 0<br>
['empty(('] = 0<br>
['color']<br>
['empty(('] = 0<br>
['3'] = 0<br>
['5'] = 0<br>
['4'] = 0<br>
['2'] = 0<br>
['1'] = 0<br>
</body>
</html>