簡體   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