Можно ли получить доступ к членам многомерного массива, указав имя члена как переменной? Таким образом, можно изменить столбец, изменив значение переменной и в конечном итоге получить значение этого столбца.
Пример набора данных
{
"data": {
"id": 2757,
"name": "Callisto Network",
"symbol": "CLO",
"website_slug": "callisto-network",
"rank": 472,
"circulating_supply": 431731687.0,
"total_supply": 479443453.0,
"max_supply": 6500000000.0,
"quotes": {
"USD": {
"price": 0.0183603,
"volume_24h": 37051.4,
"market_cap": 7926723.0,
"percent_change_1h": 0.15,
"percent_change_24h": -2.43,
"percent_change_7d": -9.42
},
"BTC": {
"price": 2.7767e-06,
"volume_24h": 5.6034650942,
"market_cap": 1199.0,
"percent_change_1h": 0.01,
"percent_change_24h": -6.16,
"percent_change_7d": -7.0
}
},
"last_updated": 1531748143
},
"metadata": {
"timestamp": 1531747771,
"error": null
}
}
Вы можете устанавливать ключи в массиве и прокручивать его, чтобы получать значения динамически, что-то вроде ниже
var array = {
"data": {
"id": 2757,
"name": "Callisto Network",
"symbol": "CLO",
"website_slug": "callisto-network",
"rank": 473,
"circulating_supply": 431584927.0,
"total_supply": 479260453.0,
"max_supply": 6500000000.0,
"quotes": {
"USD": {
"price": 0.0185867,
"volume_24h": 37855.1,
"market_cap": 8021740.0,
"percent_change_1h": 8.15,
"percent_change_24h": -2.81,
"percent_change_7d": -8.51
},
"BTC": {
"price": 2.8148e-06,
"volume_24h": 5.7328503345,
"market_cap": 1215.0,
"percent_change_1h": 7.98,
"percent_change_24h": -6.41,
"percent_change_7d": -5.96
}
},
"last_updated": 1531744663
},
"metadata": {
"timestamp": 1531744326,
"error": null
}
};
/* Specifying keys in array */
var key = ["USD", "BTC"];
for (key in array.data.quotes) {
/* Price of both keys */
console.log(key + ' price is: ' + array.data.quotes[key].price);
/*****************************************/
}
Или вы можете просто передать имя переменной, как это
var key = "USD";
console.log(array.data.quotes[key].price);
Да, это возможно. На объекте, который вы предоставили:
let myObject = {
"data": {
"id": 2757,
"name": "Callisto Network",
"symbol": "CLO",
"website_slug": "callisto-network",
"rank": 478,
"circulating_supply": 431633647.0,
"total_supply": 479321653.0,
"max_supply": 6500000000.0,
"quotes": {
"USD": {
"price": 0.0180211,
"volume_24h": 36733.5,
"market_cap": 7778513.0,
"percent_change_1h": 3.86,
"percent_change_24h": -5.71,
"percent_change_7d": -11.29
},
"BTC": {
"price": 2.7279e-06,
"volume_24h": 5.5604246894,
"market_cap": 1177.0,
"percent_change_1h": 3.77,
"percent_change_24h": -9.24,
"percent_change_7d": -8.86
}
},
"last_updated": 1531744784
},
"metadata": {
"timestamp": 1531744413,
"error": null
}
}
Чтобы получить доступ к полю name
из переменной этого объекта, выполните следующие действия:
let x = 'name'
console.log(myObject.data[name]);
Обратите внимание, вместо использования .
, мы вместо этого обмениваем name
переменной открывающей и закрывающей скобками для доступа к ней.
"Callisto Network"
распечатает
Вы можете узнать больше здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors
спасибо за помощь, это работает :)
const variable = 'USD' // change it to BTC
alert(JSON.stringify(array.quotes[variable].price), true)
Просто используйте альтернативный синтаксис объекта следующим образом:
data.quotes[$variable].price
Вот пример с вашими данными jsfiddle