我目前正在尝试从API响应中获取数据点,以用于制图。我有兴趣返回以下对象的“ 4. close”值数组。
let res = {
"Meta Data": {
"1. Information": "Daily Prices (open, high, low, close) and Volumes",
"2. Symbol": "amzn",
"3. Last Refreshed": "2020-03-20",
"4. Output Size": "Compact",
"5. Time Zone": "US/Eastern"
},
"Time Series (Daily)": {
"2020-03-20": {
"1. open": "1926.3100",
"2. high": "1957.0000",
"3. low": "1820.7300",
"4. close": "1846.0900",
"5. volume": "9740990"
},
"2020-03-19": {
"1. open": "1860.0000",
"2. high": "1945.0000",
"3. low": "1832.6500",
"4. close": "1880.9300",
"5. volume": "10399943"
},
"2020-03-18": {
"1. open": "1750.0000",
"2. high": "1841.6600",
"3. low": "1745.0000",
"4. close": "1830.0000",
"5. volume": "9596297"
}
}
}
// I need this returned => [1846, 1880, 1830]
当前我的代码如下:
const parsed = res["Time Series (Daily)"]
const datesArr = Object.entries(parsed).map((e) => ( { [e[0]]: e[1] } ))
function getYCoords() {
for(i=0;i<datesArr.length;i++) {
let dateObj = datesArr[i]
console.log(dateObj["4. close"])
}
}
我使用map将嵌套对象转换为对象数组,希望这可以帮助我正确地遍历数据,但是我认为这使事情变得更加困难,并且在这一点上变得不确定。谁能帮我吗?
答案 0 :(得分:0)
您的问题是core.async
为您提供了一个看起来像这样的数组:
Object.entries(parsed)
...因此,当您将[ "2020-03-20", { "1. open": "1926.3100", "2. high": "1957.0000", "3. low": "1820.7300", "4. close": "1846.0900", "5. volume": "9740990" } ], [ "2020-03-19", { "1. open": "1860.0000", "2. high": "1945.0000", "3. low": "1832.6500", "4. close": "1880.9300", "5. volume": "10399943" } ], [ "2020-03-18", { "1. open": "1750.0000", "2. high": "1841.6600", "3. low": "1745.0000", "4. close": "1830.0000", "5. volume": "9596297" } ] ]
映射为新对象的 key 时,您会将日期设置为密钥,而不是e[0]
等。对象的属性。一个简单的解决方法是将条目映射到存储在"4. close"
中的对象,该对象包含所有编号的属性:
e[1]
但是,由于您只关心值,因此无需获取条目(包含键和值)。相反,您可以获取const res = { "Meta Data": { "1. Information": "Daily Prices (open, high, low, close) and Volumes", "2. Symbol": "amzn", "3. Last Refreshed": "2020-03-20", "4. Output Size": "Compact", "5. Time Zone": "US/Eastern" }, "Time Series (Daily)": { "2020-03-20": { "1. open": "1926.3100", "2. high": "1957.0000", "3. low": "1820.7300", "4. close": "1846.0900", "5. volume": "9740990" }, "2020-03-19": { "1. open": "1860.0000", "2. high": "1945.0000", "3. low": "1832.6500", "4. close": "1880.9300", "5. volume": "10399943" }, "2020-03-18": { "1. open": "1750.0000", "2. high": "1841.6600", "3. low": "1745.0000", "4. close": "1830.0000", "5. volume": "9596297" } } }
const parsed = res["Time Series (Daily)"];
function getYCoords() {
for (i = 0; i < datesArr.length; i++) {
let dateObj = datesArr[i]
console.log(dateObj["4. close"])
}
}
const datesArr = Object.entries(parsed).map((e) => e[1]);
getYCoords();
(即对象数组),然后将它们映射到存储在Object.values()
的值:
"4. close"