var choices = [[]];
var i = 0;
$('.type_multiple-choices').each(function () {
$('input[name^=choice]').each(function () {
choices[i].push($(this).val());
});
i++;
});
我想创建多维数组并将输入数据推入其中。
但是当我尝试这样的时候,会出现错误:
无法读取未定义的属性'push'
答案 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;