创建并推送到多维数组

时间:2017-04-06 07:43:15

标签: jquery arrays multidimensional-array

var choices = [[]];
var i = 0;
$('.type_multiple-choices').each(function () {
   $('input[name^=choice]').each(function () {
      choices[i].push($(this).val());
   });

   i++;
});

我想创建多维数组并将输入数据推入其中。

但是当我尝试这样的时候,会出现错误:

  

无法读取未定义的属性'push'

1 个答案:

答案 0 :(得分:3)

问题是因为choices[i]尚不存在。您需要将数组推送到choices

据推测,您还希望将[name^=choice]选择仅限制为当前.type_multiple-choices元素中的选择。为此,您可以将find()与嵌套的map()调用结合使用,如下所示:



var choices = $('.type_multiple-choices').map(function () {
  return [$(this).find('input[name^=choice]').map(function () {
    return $(this).val();
  }).get()];
}).get();

console.log(choices);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="type_multiple-choices">
  <input name="choice1" value="choice1" />
  <input name="choice1" value="choice2" />
  <input name="choice1" value="choice3" />
</div>
<div class="type_multiple-choices">
  <input name="choice1" value="choice4" />
  <input name="choice1" value="choice5" />
  <input name="choice1" value="choice6" />
</div>
<div class="type_multiple-choices">
  <input name="choice1" value="choice7" />
  <input name="choice1" value="choice8" />
  <input name="choice1" value="choice9" />
</div>
&#13;
&#13;
&#13;