2017-09-23 152 views
0

我有一個來自API的數據。從變量數組中獲取數據

以下是來自API的數據。

[ 
    { 
    "id": "litecoin", 
    "name": "Litecoin", 
    "symbol": "LTC", 
    "rank": "6", 
    "price_usd": "48.5624", 
    "price_btc": "0.0128526", 
    "24h_volume_usd": "198794000.0", 
    "market_cap_usd": "2576800216.0", 
    "available_supply": "53061632.0", 
    "total_supply": "53061632.0", 
    "percent_change_1h": "-1.98", 
    "percent_change_24h": "6.07", 
    "percent_change_7d": "-0.51", 
    "last_updated": "1506172141", 
    "price_eur": "40.637987568", 
    "24h_volume_eur": "166354795.08", 
    "market_cap_eur": "2156317957.0" 
    } 
] 

我想要price_eur。 我知道我可以用

data.price_eur 

做這個事情是可以歐元更改爲任何其他貨幣。 所以,如果我想獲得美元是使用

data.price_usd 

但貨幣將是可變的。 所以我想在'price_'變量之後創建文本。

我嘗試了一些東西,但沒有成功。 這是我試過的。

inputCrypto = 'eur';   
var priceCURCrypto = 'price_' + inputCrypto; 
var priceCUR = data[0].priceCURCrypto; 

有人可以告訴如何通過查看數組時使用變量。

+0

而不是第十萬次回答同樣的事情,這裏的回答者應該投票結束這個重複的事情,顯然是這樣。 –

回答

0

您可以使用[] notation訪問它的名字是在變量的屬性。它將評估[]中的表達式並將結果用作屬性名稱。

inputCrypto = 'eur';   
var priceCURCrypto = 'price_' + inputCrypto; 
var priceCUR = data[0][priceCURCrypto]; 

例子

const obj = { nameA: 'NameA', nameB: 'NameB' }; 
 
const name = 'name' 
 
const propName = name + 'A'; 
 

 
// Value of the propName is 'nameA', get the property with name 'nameA' 
 
console.log(obj[propName]); 
 
// Use string concatenation 
 
console.log(obj[name + 'B']);

1

使用括號

var priceCUR = data[0][priceCURCrypto]; 
2

有了點符號,你不能這樣做,因爲該點被認爲是文字屬性名後會發生什麼。

但是,您可以使用方括號表示法,它將屬性名稱視爲構建的字符串,這意味着您可以與變量和表達式連接。

foo.bar; //looks for the property @bar 
foo[bar] //looks for the property *whose name is stored* in the variable @bar 

所以你的情況:在點與方括號的語法

data[0][priceCURCrypto]; 

Here's more info