ketna
ketna

Reputation: 41

jquery multidimensional array

I'm trying to generate a multidimensional array with ul and li ids in jquery to pass it to php file.

<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);
});

I would like to receive array like this:

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

I have a problem with setting id as a key in array. It does not work. How to solve this? Thanks in advance!

Upvotes: 0

Views: 41

Answers (1)

Jeto
Jeto

Reputation: 14927

You can make use of .map() to transform each subarray of <li> into an array of their IDs:

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>

Upvotes: 1

Related Questions