当前位置:  开发笔记 > 编程语言 > 正文

javascript中的关联数组

如何解决《javascript中的关联数组》经验,为你挑选了1个好方法。

我有这个对象:

function formBuddy()
{
    var fields = new Array();
    var labels = new Array();
    var rules = new Array();
    var count=0;

    this.addField = function(field, label, rule)
    {
        fields[count] = field;
        labels[field] = label;
        rules[field] = rule;
        count = ++count;
    }
}

它以这种方式使用:

var cForm=new formBuddy();
cForm.addField("c_first_name","First Name","required");
cForm.addField("c_last_name","Last Name","required");

问题是,在addField()函数中,fields数组设置正确(可能是因为数字索引用于引用它),但其他2个数组(labelsrules)根本没有被触及.做一个console.log在firebug中显示为空的.

我需要改变什么来使它们工作?我仍然想通过字段的字符串索引来引用规则和标签.



1> Gumbo..:

改为使用对象:

function formBuddy()
{
    var fields = {};
    var labels = {};
    var rules = {};
    var count = 0;

    this.addField = function(field, label, rule)
    {
        fields[count] = field;
        labels[field] = label;
        rules[field] = rule;
        count++;
    }
}

但正如Christoph已经提到的那样,我也会将这些信息存储在一个数据结构中.例如:

function formBuddy() {
    var fields = {};
    this.addField = function(name, label, rule) {
        fields[name] = {
            name: name,
            label: label,
            rule: rule
        };
    };
    this.getField = function(name) {
        return fields[name];
    };
}

var cForm=new formBuddy();
cForm.addField("c_first_name","First Name","required");
cForm.addField("c_last_name","Last Name","required");
alert(cForm.getField("c_last_name").label);

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有