【问题标题】:Adding new element to associative array each click每次单击都向关联数组添加新元素
【发布时间】:2012-10-16 04:46:14
【问题描述】:

这可能很容易,但我现在不知道如何解决它。每次单击提交按钮时,下面的函数都会检查输入字段 1(名称),如果不为空,则将值添加到关联数组中,然后继续描述。

我想要的是在每次点击时向数组添加一个新的 1 级元素,它应该保存这些值,这样在点击三下后它看起来像这样:

Click 1:
    listObject[0]['listObjectName'] = 'Name 1';
    listObject[0]['listObjectDesc'] = 'Desc 1';

Click 2:
    listObject[1]['listObjectName'] = 'Name 2';
    listObject[1]['listObjectDesc'] = 'Desc 2';

Click 3:
    listObject[2]['listObjectName'] = 'Name 3';
    listObject[2]['listObjectDesc'] = 'Desc 3';

功能:

$('#addListObjectSubmit').click(function (e) {

            var listObjectName = $('#m_newListObject').val();

            if((listObjectName == null) || (listObjectName == '')) {
                return false;
            }
            else {
                listObjects['listObjectName'] = listObjectName;

                var listObjectDesc = $('#m_newListObjectDesc').val();

                if ((listObjectDesc == null) || (listObjectDesc == '')) {
                    listObjects['listObjectDesc'] = null;
                }
                else {
                    listObjects['listObjectDesc'] = listObjectDesc;
                }
            }

            e.preventdefault();
        });

那么,处理这个问题的最佳方法是什么?

【问题讨论】:

    标签: javascript jquery arrays object associative-array


    【解决方案1】:

    如果您忘记了关联数组,它将对您有所帮助。它们仅理论上存在于 Javascript 中。事实上,一切都是对象,甚至是数组。但从数据存储的角度考虑,您可以使用一个只能以数字方式索引的简单array,也可以使用object 作为数据映射。

    以下示例创建一个数组(注意更紧凑的[] 而不是new Array())和pushes 一个映射(使用{} 创建)到其中:

    var listObjects = [];
    ...
    var newElem = {
        'listObjectName' : 'Name 1',
        'listObjectDesc' : 'Desc 1'
    };
    listObjects.push(newElem);
    

    之后,如果它是数组中的第一个元素,您可以使用 listObjects[0] 访问该元素。

    如果你想访问它的属性,你可以使用以下之一:

    listObjects[0].listObjectName
    listObjects[0]['listObjectName']
    

    因此您可以看到,在处理对象时,您可以使用. 表示法以及括号表示法——它们是等价的,但后一种形式使它看起来像是一个“关联数组”(甚至更多对于来自 PHP 的人)。

    【讨论】:

    • 最近沉迷php太多了,差点忘了js的对象性。谢谢你刷新我的记忆:)
    • @holyredbeard 只是扩展了我的答案。我确定你实际上来自 PHP 背景;)。
    【解决方案2】:

    ..您的意思是,您想在每次点击时将“关联数组”(它们在 JavaScript 中称为“对象”,顺便说一句)添加到数组中?

    给数组加东西的方法是push():

    listObject.push({
        'listObjectName': 'Name X',
        'listObjectDesc': 'Description X'
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-23
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 2021-03-20
      • 2019-07-07
      相关资源
      最近更新 更多