многомерный массив jquery

#php #jquery

#php #jquery

Вопрос:

Я пытаюсь сгенерировать многомерный массив с идентификаторами ul и li в jquery, чтобы передать его в файл php.

 <ul id="U1">
<li id="L1"></li>
</ul>
<ul id="U2">
<li id="L2"></li>
<li id="L3"></li>
</ul>
<ul id="U3">
<li id="L4"></li>
<li id="L5"></li>
<li id="L6"></li>
</ul>

var ul_arr = [];
$('ul').each(function () {
var ul_id = $(this).attr('id');
ul_arr.push(ul_id);
var li_arr = [];
$(this).find('li').each(function () {
var li_id = $(this).attr('id');
li_arr.push(li_id);
});
ul_arr[ul_id].push(li_arr);
});
 

Я хотел бы получить такой массив:

 [U1 => array[L1], U2 => array[L2, L3], U3 => array[L4, L5, L6]].
 

У меня проблема с установкой id в качестве ключа в массиве. Это не работает.
Как это решить? Заранее спасибо!

Ответ №1:

Вы можете использовать .map() для преобразования каждого подмассива <li> в массив их идентификаторов:

 var uls = {};

$('ul').each(function () {
  uls[$(this).attr('id')] = $(this).find('li').map(function () {
    return $(this).attr('id');
  }).get();
});

console.log(uls); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="U1">
  <li id="L1"></li>
</ul>
<ul id="U2">
  <li id="L2"></li>
  <li id="L3"></li>
</ul>
<ul id="U3">
  <li id="L4"></li>
  <li id="L5"></li>
  <li id="L6"></li>
</ul> 

Комментарии:

1. Работает! Большое спасибо!