首页 > 解决方案 > 如何从复杂的 Javascript 对象中提取数据?

问题描述

假设,我有一个简单的以下 Javascript 代码片段。

let data = {
    "ethusd": {
        "at": 1581416882,
        "ticker": {
            "buy": "218.87",
            "sell": "219.0",
            "low": "0.0",
            "high": "0.0",
            "open": 209.09,
            "last": "0.0",
            "volume": "72877.8789",
            "avg_price": "213.699103431748658920247612509",
            "price_change_percent": "-100.00%",
            "vol": "72877.8789"
        }
    },
    "trstusd": {
        "at": 1581416882,
        "ticker": {
            "buy": "0.0",
            "sell": "0.0",
            "low": "0.0",
            "high": "0.0",
            "open": "0.0",
            "last": "0.0",
            "volume": "0.0",
            "avg_price": "0.0",
            "price_change_percent": "+0.00%",
            "vol": "0.0"
        }
    },
    "trsteth": {
        "at": 1581416882,
        "ticker": {
            "buy": "0.0",
            "sell": "0.0",
            "low": "0.0",
            "high": "0.0",
            "open": "0.0",
            "last": "0.0",
            "volume": "0.0",
            "avg_price": "0.0",
            "price_change_percent": "+0.00%",
            "vol": "0.0"
        }
    }
}


for (let element in data)
{
	let innerElement = data[element];
	
	for (let innerData in innerElement)
	{
		if (innerData !== "at")
		{
			let internalData = innerElement[innerData];

			for (let x in internalData)
			{
				console.log(x,internalData[x]);
			}
		}
	}
}

我在上面的代码上尝试的是获得特别是买入和卖出的价值。所以我就这样写了一段代码。这是从 javascript 对象或 JSON 数据格式中提取数据的好方法吗?如果没有,有哪些有效的方法和良好做法?

标签: jsonjavascript-objects

解决方案


这取决于你想做什么。

例如,如果您必须获取每个交易所的所有代码:

for(let exchange in data) {
    var ticker = data[exchange]["ticker"];
    console.log(ticker);
    // maybe here you can creare row of a table? (example)
}

or..

for(let exchange in data) {
    var ticker = data[exchange].ticker;
    console.log(ticker);
    // maybe here you can creare row of a table? (example)
}

如果您想访问特定交易所的代码:

var ticker = data["ethusd"]["ticker"];

or..
var ticker = data.ethusd["ticker"];

or..
var ticker = data.ethusd.ticker;

显然,您必须检查该字段是否存在:

var exist = typeof data.ethusd !== 'undefined' && data.ethusd !== null;

or..
var exist = typeof data["ethusd"] !== 'undefined' && data["ethusd"] !== null;

or..
var exist = (!!data.ethusd);

or..
var exist = (!!data["ethusd"]);

这是一个简单的 Javascript 对象,您可以通过对象字段或通过字段名称作为字典的“键”来访问它。


推荐阅读