繁体   English   中英

在Javascript中将对象作为参数传递-不仅是参数,还包括根据变量构建的参数

[英]Passing an Object as an Argument in Javascript - But not simply an Argument but an argument built from variables

我正在将对象传递给函数。 下面是简化的示例:

countyInfo(sales.NY2008);  

对象是:

        {countyName:"Albany",percentage:0.864789889,percentageComparison:40.18903649,sales:1222},
        {countyName:"Allegany",percentage:0.789529462,percentageComparison:27.98874729,sales:149},
        {countyName:"Broome",percentage:1.009475302,percentageComparison:63.64364553,sales:880},
        {countyName:"Cattaraugus",percentage:0.874885092,percentageComparison:41.82554597,sales:276},
        {countyName:"Cayuga",percentage:0.801267677,percentageComparison:29.89160156,sales:268},
        {countyName:"Chautauqua",percentage:0.830185925,percentageComparison:34.5794701,sales:455},
        {countyName:"Chemung",percentage:0.744919757,percentageComparison:20.75717391,sales:272},
        {countyName:"Chenango",percentage:1.191003494,percentageComparison:93.07074993,sales:242},
        {countyName:"Clinton",percentage:0.767315265,percentageComparison:24.38765663,sales:265},
        {countyName:"Columbia",percentage:0.83461736,percentageComparison:35.29783949,sales:260},
        {countyName:"Cortland",percentage:1.144086442,percentageComparison:85.46513794,sales:234},

它工作得很漂亮。

现在,我想由变量组成此参数。

var getLocation = "NY";
var getYear     = "2008";
var getParameter= getLocation + getYear;
countyInfo(sales.getParameter)

当我传递字符串时,它不起作用。 但是,这怎么办呢?

由于sales似乎是一个对象,因此您可以使用索引符号来访问成员。

也就是说, sales.NY2008等同于sales["NY2008"]

所以,只要做

countyInfo(sales[getLocation + getYear]);

只需更改您的代码即可使用方括号表示法访问对象属性,而不是点表示法

var getLocation = "NY";
var getYear     = "2008";
var getParameter= getLocation + getYear;
countyInfo(sales[getParameter]);

点表示法:

  • 属性标识只能是字母数字(和_和$)
  • 属性标识符不能以数字开头。
  • 属性标识符不能包含变量。
  • 确定-obj.prop_1,obj.prop $
  • 不正常-obj.1prop,obj.prop名称

括号符号:

  • 属性标识符必须是字符串或引用字符串的变量。
  • 可以使用以数字开头的变量,空格和字符串
  • OK — obj [“ 1prop”],obj [“ prop name”]

有关详细说明,请参考-

https://codeburst.io/javascript-quickie-dot-notation-vs-bracket-notation-333641c0f781

暂无
暂无

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

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