Javascript 将值推送到关联数组上

Javascript 将值推送到关联数组上,javascript,push,associative-array,Javascript,Push,Associative Array,我为一个我指导的学生编写了以下代码,我想知道是否有人能想出一个更简单的方法,或者已经存在的方法?我也对学习如何用javascript创建插件感兴趣,但忘记了如何在google上找到插件 不管怎样,这是代码 window.addEventListener('load', function() { for(var i = 0; i < document.forms[0].length; i++) { document.forms[0].elements[i].c

我为一个我指导的学生编写了以下代码,我想知道是否有人能想出一个更简单的方法,或者已经存在的方法?我也对学习如何用javascript创建插件感兴趣,但忘记了如何在google上找到插件

不管怎样,这是代码

window.addEventListener('load', function()
{
    for(var i = 0; i < document.forms[0].length; i++)
    {
        document.forms[0].elements[i].checked = false;
    }   
}, false);

function formHandler()
{
    valArray = new Array();
    toppArray = new Array();
    var theForm = document.forms[0];

    for(var i = 0; i < theForm.length; i++)
    {
        theValue = theForm.elements[i].value;
        if(theForm.elements[i].checked == true)
        {
            if(theForm.elements[i].type == 'checkbox' && theForm.elements[i].name == 'myChBx')
            {
                appendArr(toppArray, theForm.elements[i].value);
                appendArr(valArray, toppArray, 'topping');  
            }else
            {
                appendArr(valArray, theValue);  
            }
        }
    }
}

function appendArr(array, value, keyVal = '')
{
    if(keyVal != '')
    {
        array[keyVal] = value;
    }else
        array[array.length] = value;
}
但我已经读过几个地方,你必须如何使用对象在javascript中创建一个关联数组。在某种程度上,我想我已经做到了,但我成功地使用了数组对象

这样做的目的是从一个简单的单选框和复选框表单中获取值,比如这个表单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="./appendArr.js"></script>
</head>

<body>
    <form action="" method="post">
        Radio 1:<input type="radio" name="myRdo" id="rdo" value="radio 1" onclick="formHandler();" />
        Radio 2:<input type="radio" name="myRdo" id="rdo" value="radio 2" onclick="formHandler();" />
        Radio 3:<input type="radio" name="myRdo" id="rdo" value="radio 3" onclick="formHandler();" />
        <br />
        Checkbox 1:<input type="checkbox" name="myChBx" id="myChBx" value="Checkbox 1" onclick="formHandler();" />
        Checkbox 2:<input type="checkbox" name="myChBx" id="myChbx" value="Checkbox 2" onclick="formHandler();" />
        Checkbox 3:<input type="checkbox" name="myChBx" id="myChbx" value="Checkbox 3" onclick="formHandler();" />
        <br />
        <input type="submit" name="submit" id="button" " value="Button" />
    </form>
</body>
</html>

无标题文件
第一台:
第二台:
第三台:

复选框1: 复选框2: 复选框3:

JavaScript没有关联数组,它有“数组”作为索引列表,它有“对象”作为键:值容器。这似乎与你的要求并不相关,所以。。。你真正需要回答的问题是什么?“如何在JavaScript中实现$arr[]=$val”?如果是,则为push(),如中所示:


如果这不是你的问题,请编辑你的原始帖子,因为它完全不清楚你到底想知道什么。

JavaScript没有关联数组,它有索引列表的“数组”,它有键:值容器的“对象”。这似乎与你的要求并不相关,所以。。。你真正需要回答的问题是什么?“如何在JavaScript中实现$arr[]=$val”?如果是,则为push(),如中所示:


如果这不是你的问题,请编辑你的原始帖子,因为它完全不清楚你到底想知道什么。

为什么你要在
数组中存储自定义属性?你确定你不想要一个
对象
?和我一起工作的女孩正在创建一个比萨饼订单,单选按钮应该是特产订单(肉食爱好者、素食者等)和配料(辣香肠、菠萝皮等),就像她编码的那样;每次单击元素时,它都会添加到该数组中。所以我创造了一种方法,让她能够点击一个浇头,并将其自动附加到她正在维护的数组中;如果这有意义的话作为旁注。。。数组本身位于已定义的对象Pizza中。上面的代码是我试图为她开发一个易于使用的函数。而且,我只是离开了她已经开始的,因为在大多数情况下,它是有效的。。。而且我不想在快到最后期限的时候把她的所有代码都扔掉。@BrianAllanWest将数组语义(数字索引和
.length
)与对象语义(字符串命名属性)混为一谈不是一个好习惯。JavaScript数组与PHP数组有很大不同。特别是,
length
属性只包括数字索引属性。该代码工作正常,并且实现了我的预期功能。。。无论它是正确的还是良好的编码实践,此时对我来说都无关紧要,因为它不是我的项目,而是一个新的javascript程序员的工作。我的目的是想看看是否有人可以为这个问题提供任何其他类型的解决方案。为什么要尝试在
数组中存储自定义属性?你确定你不想要一个
对象
?和我一起工作的女孩正在创建一个比萨饼订单,单选按钮应该是特产订单(肉食爱好者、素食者等)和配料(辣香肠、菠萝皮等),就像她编码的那样;每次单击元素时,它都会添加到该数组中。所以我创造了一种方法,让她能够点击一个浇头,并将其自动附加到她正在维护的数组中;如果这有意义的话作为旁注。。。数组本身位于已定义的对象Pizza中。上面的代码是我试图为她开发一个易于使用的函数。而且,我只是离开了她已经开始的,因为在大多数情况下,它是有效的。。。而且我不想在快到最后期限的时候把她的所有代码都扔掉。@BrianAllanWest将数组语义(数字索引和
.length
)与对象语义(字符串命名属性)混为一谈不是一个好习惯。JavaScript数组与PHP数组有很大不同。特别是,
length
属性只包括数字索引属性。该代码工作正常,并且实现了我的预期功能。。。无论它是正确的还是良好的编码实践,此时对我来说都无关紧要,因为它不是我的项目,而是一个新的javascript程序员的工作。我的目的是想看看是否有人能为这个问题提供任何其他类型的解决方案。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="./appendArr.js"></script>
</head>

<body>
    <form action="" method="post">
        Radio 1:<input type="radio" name="myRdo" id="rdo" value="radio 1" onclick="formHandler();" />
        Radio 2:<input type="radio" name="myRdo" id="rdo" value="radio 2" onclick="formHandler();" />
        Radio 3:<input type="radio" name="myRdo" id="rdo" value="radio 3" onclick="formHandler();" />
        <br />
        Checkbox 1:<input type="checkbox" name="myChBx" id="myChBx" value="Checkbox 1" onclick="formHandler();" />
        Checkbox 2:<input type="checkbox" name="myChBx" id="myChbx" value="Checkbox 2" onclick="formHandler();" />
        Checkbox 3:<input type="checkbox" name="myChBx" id="myChbx" value="Checkbox 3" onclick="formHandler();" />
        <br />
        <input type="submit" name="submit" id="button" " value="Button" />
    </form>
</body>
</html>
["a","b","c"].push("d") // result: ["a","b","c","d"]