JavaScript對象之關聯陣列

來源:互聯網
上載者:User

標籤:

Tip: 內容摘抄自《JavaScript權威指南》,看過該書的同學可以忽略本文。

存取一個對象的屬性的方式:

  obj.attr;

  obj["attr"];

兩者最重要的區別就是前者的屬性名稱是標示符,後者的屬性名稱是一個字串

用"."運算子來存取一個對象的屬性時,屬性名稱是標示符,JavaScript程式中,標示符必須被逐字輸入,它們不是一種資料類型,因此程式不能對他們進行操作。

用數組的概念"[]"來存取一個對象的屬性時,屬性名稱是用字串表示的。字串是JavaScript的一種資料類型,因此可以在程式啟動並執行過程中操作並建立他們。

 

關聯陣列

  obj["attr"];

  如果使用一個對象是採用的是這種形式,我們常常稱它為關聯陣列。關聯陣列是一種資料結構,允許你動態將任意的數值和任意的字串關聯在一起。實際上,JavaScript對象的內部實現就是關聯陣列。

 

應用情境(obj["attr"])

  當你需要編寫一個程式,允許yonghu輸入他所擁有的股票的名字和相應的份額來計算使用者在股票市場投資的當前值,你可以這樣做。

  使用一個portfolio對象來儲存這些資訊,使用者輸入的每隻股票的名字作為該對象的一個屬性,其值為該支股票擁有的份額。例如:使用者擁有Netscape公司的股票,份額為50,就有portfolio.nscp = 50;

  這個程式需要一個迴圈,首先提示使用者輸入股票名,然後輸入他擁有的份額。

  由於使用者在程式運行時輸入股票名(portfolio對象的屬性),所以你無法預Crowdsourced Security Testing道這些股票名是什麼,所以在編程時不能使用"."運算子的方式,但可以使用"[]"關聯陣列的方式,因為他的屬性名稱是一個字串,程式運行時可以動態建立。

  下面是具體的代碼

(function(){var portfolio = {};var name,value,sum=0;//定義股票名/份額/投資當前值(總金額)while(true){//輸入股票名和份額並寫入到portfolio對象中if(!(name = prompt("請輸入一支股票名","nscp") || false))break;if(!(value= prompt("請輸入您擁有的份額",50) || false))break;portfolio[name] = +value;}for(e in portfolio){//遍曆計算投資當前值(總金額)    sum +=portfolio[e]*1;//假設每支股票都是1元, 每支股票數量*股票價格}console.log(sum);//輸出})();

  由於股票名是未知的,如果沒有for/in迴圈,我們不能編寫出這樣的代碼,輸出屬性名稱並計算結果。這是將屬性名稱從portfolio對象中抽取出來的唯一方法

 

注意:

for(e in portfolio){    sum +=portfolio[e]*1;}

中,e得到的只是portfolio的屬性名稱,並不是屬性名稱對應的屬性值,所以 ”portfolio[e]“ 的寫法是必要的

 

除此之外,你還可以看看這篇文章,內容差不多  [匯入]js 關聯陣列 詳解

 

JavaScript對象之關聯陣列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.