.each 循环内的 javascript .push 方法仅返回一个数组

标签 javascript jquery multidimensional-array

我正在尝试迭代复选框组,如果每个组至少选中一个复选框,我想将该产品信息添加到数组(upperOrder)中。我的代码的问题是它只添加最后一个选中的复选框组(或覆盖之前添加的组)。

基本上我想要一个多维数组,其中主数组是upperOrder,子数组是每个产品的信息。

感谢并感谢任何人的帮助,或者如果有更好的方法来完成此任务,我将不胜感激!

html:

<form class="upperCheckboxForm" data-prodid="100" data-prodname="adams" id="group1">
<fieldset data-role="controlgroup">
    <legend>Group 1:</legend>
    <input type="checkbox" name="checkbox-v-2a" id="checkbox-v-2a" value="one" data-tooth-position="UR1">
    <label for="checkbox-v-2a">One</label>
    <input type="checkbox" name="checkbox-v-2b" id="checkbox-v-2b" value="two" data-tooth-position="UR2">
    <label for="checkbox-v-2b">Two</label>
    <input type="checkbox" name="checkbox-v-2c" id="checkbox-v-2c" value="three" data-tooth-position="UR3">
    <label for="checkbox-v-2c">Three</label>
</fieldset>
</form>

<form class="upperCheckboxForm" data-prodid="101" data-prodname="lap" id="group2">
<fieldset data-role="controlgroup">
    <legend>Group 2:</legend>
    <input type="checkbox" name="checkbox-v-2a" id="checkbox-v-2a" value="four" data-tooth-position="UR4">
    <label for="checkbox-v-2a">Four</label>
    <input type="checkbox" name="checkbox-v-2b" id="checkbox-v-2b" value="five" data-tooth-position="UR5">
    <label for="checkbox-v-2b">Five</label>
    <input type="checkbox" name="checkbox-v-2c" id="checkbox-v-2c" value="six" data-tooth-position="UR6">
    <label for="checkbox-v-2c">Six</label>
</fieldset>
</form>

<button id="submitPrintForm">Click</button>

jquery:

$('#submitPrintForm').on('click', function() {

var upperOrder      = [];

$('.upperCheckboxForm').each(function() {

    var $prodName           = $(this).data('prodname'),
        $prodId         = $(this).data('prodid'),
        $prodUrl            = $(this).attr('id'),
        $prodPosition       = [];

    $('#'+ $prodUrl +' input:checked').each(function() {
      $prodPosition.push($(this).data('tooth-position'));
    })

    if($prodPosition.length > 0) {
        upperOrder.push = ([$prodName, $prodId, $prodPosition.length, $prodPosition]);
    }
})
console.log(upperOrder);
});

最佳答案

push 是一种方法。像这样调用它:

upperOrder.push([$prodName, $prodId, $prodPosition.length, $prodPosition])

当您向 upperOrder.push 分配某些内容时,您实际上覆盖了方法 Push,这将使后续调用失败。

关于.each 循环内的 javascript .push 方法仅返回一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17492545/

相关文章:

打印指定区域的Javascript解决方案。跨浏览器友好

php - 在 Firebug 中发现 JQuery 语法错误,但在我的代码中没有

c - c中移动数组元素

php - 多维数组?根据同一数组中的值切换项目的颜色(在数组中)

Javascript数组输入并显示用户定义的数据

javascript - 字符串拆分为 2 个数组

javascript - Safari 上可定制的内置元素——通过脚本标签与 ES6 导入进行 polyfill

javascript - 在 Javascript 中可以选择字符串中的单词吗?

javascript - 更新内容以存储在 session 存储中

jquery - 防止:hover