繁体   English   中英

在对象中使用方括号

[英]Use of square brackets in objects

我的代码必须是这样的:

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

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

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

但是,我能做的是解释 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
};

我猜你想要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
    }
}
obj = {
 "rules" : {
  "jform" : {
    "name" : {
      required:true,
      minlength:5,
      maxlength:15
    }
   }
  }
},

您现在可以访问这样的值

 obj[rules][jform][name]

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

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

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

或者

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM