【问题标题】:Use of square brackets in objects在对象中使用方括号
【发布时间】:2012-03-14 04:16:34
【问题描述】:

我的代码必须是这样的:

rules: {
  jform[name]: {
  required:true,
  minlength:5,
  maxlength:15
},

我应该如何使用这些方括号?在这个网站和谷歌上有很多关于这个主题的答案,但不是特别针对这个。

【问题讨论】:

  • 你的代码不能是这样的。那是无效的 JavaScript。您实际上是如何尝试访问该对象的?
  • 我已经删除了它周围的所有其他代码,我只需要知道如何在“名称”周围使用 []。这不可能吗?
  • 你试过反斜杠吗? (\[\\[

标签: javascript brackets


【解决方案1】:

我现在无法准确回答你的问题,因为你问的是如何使用无效的语法,这是不可能的,因为它是无效的。

但是,我可以做的是解释 JSON 在 JavaScript 中是如何工作的,并希望它能解决你的问题:

基础知识

{} 是一个对象字面量

//this creates a new object
a = {};
//so does this
a = new Object();

[] 是一个数组字面量

//this creates a new array
a = [];
//so does this
a = new Array();

属性可以通过.[]符号访问:

//these are the same
a.b = c;
a['b'] = c;

可以使用文字值或字符串来设置对象文字:

a = {
    //any character you can use for a variable name can be
    //used to instantiate an object without quotes
    b: c,
    //special characters need to be quoted
    "foo bar baz": "fizz buzz"
};

您的原始语法:

rules: {
  jform[name]: {
  required:true,
  minlength:5,
  maxlength:15
}

无效,因为您不能在变量名中使用 [] 字符,但是您可以使用字符串作为文字值:

rules: {
  "jform[name]": {
  required:true,
  minlength:5,
  maxlength:15
}

...将被访问为:

rules["jform[name]"]

但您似乎希望以如下方式访问数据:

rules.jform[name]

需要设置为:

rules: {
    jform: {}
}
...more code...
rules.jform[name] = {rules: {
    required:true,
    minlength:5,
    maxlength:15
};

【讨论】:

    【解决方案2】:

    我猜你想要 jform[name] 的值作为对象中的一个键。声明对象字面量时,不能使用变量作为键。您必须将此键添加为另一个语句。

    例子:

    var data = {
        rules: {
        }
    };
    data.rules[jform[name]]= {
        required:true,
         minlength:5,
         maxlength:15
    };
    

    如果您希望键字面上是jform[name],那么您需要在键周围使用引号。

    rules: {
        "jform[name]": {
            required:true,
            minlength:5,
            maxlength:15
        }
    }
    

    【讨论】:

    • 这么简单!这就是它的全部内容:“jform[name]”感谢大家的宝贵时间!
    【解决方案3】:
    obj = {
     "rules" : {
      "jform" : {
        "name" : {
          required:true,
          minlength:5,
          maxlength:15
        }
       }
      }
    },
    

    您现在可以访问这样的值

     obj[rules][jform][name]
    

    【讨论】:

      【解决方案4】:

      你是说 JSON 吗?还是 JavaScript 对象字面量?请从您的问题中删除流行语“jQuery”。

      如果你想要一个带有(方)括号的属性名称,你可以这样做

      rules = {
        "jform[name]": {
          required:true,
          minlength:5,
          maxlength:15
        }
      }
      

      rules["jform[name]"] = {...};
      

      【讨论】:

        猜你喜欢
        • 2015-07-27
        • 2015-12-07
        • 1970-01-01
        • 1970-01-01
        • 2015-09-08
        • 1970-01-01
        • 2012-09-12
        • 2023-03-09
        相关资源
        最近更新 更多