2017-08-20 193 views
-1

有誰能告訴我爲什麼這樣不能從數組中獲取值嗎?無法從數組中獲取值

var state_tax= new Array(); 
state_tax["Alabama"]=0.05; 
state_tax["Alaska"]=0; 
state_tax["Arizona"]=0.08; 
state_tax["Arkansas"]=0; 
state_tax["Maryland"]=0.06; 

var v_tax=0; 

var lv_bts = 'Maryland'; 

var v_tax = state_tax[lv_bts.value]; 

感謝

+0

'lv_bts'是一個字符串,它沒有價值propery。 – felixmosh

回答

0

您需要的字符串作爲關鍵的公正價值,沒有任何財產。

var v_tax = state_tax[lv_bts]; 
//     ^^^^^^ 

您可以使用一個對象而不是數組的,因爲你使用它像一個對象,不使用陣列的特殊功能。

var state_tax = {}; 
 
state_tax["Alabama"] = 0.05; 
 
state_tax["Alaska"] = 0; 
 
state_tax["Arizona"] = 0.08; 
 
state_tax["Arkansas"] = 0; 
 
state_tax["Maryland"] = 0.06; 
 

 
var lv_bts = 'Maryland'; 
 
var v_tax = state_tax[lv_bts] || 0; // take a default value if property does not exists 
 

 
console.log(v_tax);

+0

感謝這工作得很好!你能幫我多做一件事嗎?我需要用<?php echo $ BILLTOSTATE;>>來獲得那個「var lv_bts =」「,但它在一個函數內部不起作用,試圖將BILLTOSTATE添加到全局並且抓住func內部,但仍然沒有成功 – LeeAlexander

+0

對不起,我無法幫助使用php。 –

+0

好的,謝謝你 – LeeAlexander

1

因爲有你lv_bts沒有value財產不能抓住它。
另外,爲什麼不使用你可以輕鬆調試的東西?使用數組(實際上它是對象實例)與命名的鍵是奇數。如果你這樣說:state_tax.length a 0結果只是誤導和錯誤的。

使用文字,而不是一個對象:

var state_tax = { 
 
"Alabama" : 0.05, 
 
"Alaska" : 0, 
 
"Arizona" : 0.08, 
 
"Arkansas" : 0, 
 
"Maryland" : 0.06 
 
} 
 

 
console.log(state_tax.Maryland); 
 
console.log(state_tax["Maryland"]);

如果你真的想有一個value財產,但在這裏你去:

var state_tax = { 
 
"Alabama" : {value: 0.05}, 
 
"Alaska" : {value: 0}, 
 
"Arizona" : {value: 0.08}, 
 
"Arkansas" : {value: 0}, 
 
"Maryland" : {value: 0.06} 
 
} 
 

 
console.log(state_tax.Maryland.value); 
 
console.log(state_tax["Maryland"].value);