使用 JavaScript/React 过滤 API 响应
Filtering API response with JavaScript/React
我正在尝试过滤一个 API 调用,这样我就可以制作一个仅包含其一个属性的数组,但我似乎无法让它工作。
响应结构
"items": {
"1649169000": {
"date": "05-04-2022",
"date_utc": 1649169000,
"open": 16.08,
"high": 16.08,
"low": 15.91,
"close": 15.96,
"volume": 0
},
"1649172600": {
"date": "05-04-2022",
"date_utc": 1649172600,
"open": 15.96,
"high": 16,
"low": 15.89,
"close": 15.9,
"volume": 9990775
},
"1649176200": {
"date": "05-04-2022",
"date_utc": 1649176200,
"open": 15.9,
"high": 15.99,
"low": 15.89,
"close": 15.95,
"volume": 7927672
},
}
对于折线图,我需要一个包含所有“开放”值的数组,最好还有日期。
我已经尝试了所有我能想到的方法,但似乎唯一键让我失望了。
尝试映射对象时不断出现错误“TypeError:items.map 不是函数”。
items.map((item, index) => item.open)
我对使用 APIs 还很陌生,所以我想我只是遗漏了一些简单的东西。
谢谢!!
您的数据是一个对象,您可以使用 Object.values()
首先在数组中获取对象的值,然后像您一样使用 map
。
const data = {
"items": {
"1649169000": {
"date": "05-04-2022",
"date_utc": 1649169000,
"open": 16.08,
"high": 16.08,
"low": 15.91,
"close": 15.96,
"volume": 0
},
"1649172600": {
"date": "05-04-2022",
"date_utc": 1649172600,
"open": 15.96,
"high": 16,
"low": 15.89,
"close": 15.9,
"volume": 9990775
},
"1649176200": {
"date": "05-04-2022",
"date_utc": 1649176200,
"open": 15.9,
"high": 15.99,
"low": 15.89,
"close": 15.95,
"volume": 7927672
},
}
}
const result = Object.values(data.items).map((v) => v.open);
console.log(result);
你可以Array.prototype.map() the Object.values() of data
object, and select the properties you want by using Destructuring assignment{ date, open }
代码:
const data = {items: {'1649169000': {date: '05-04-2022',date_utc: 1649169000,open: 16.08,high: 16.08,low: 15.91,close: 15.96,volume: 0,},'1649172600': {date: '05-04-2022',date_utc: 1649172600,open: 15.96,high: 16,low: 15.89,close: 15.9,volume: 9990775,},'1649176200': {date: '05-04-2022',date_utc: 1649176200,open: 15.9,high: 15.99,low: 15.89,close: 15.95,volume: 7927672,}}}
const result = Object
.values(data.items)
.map(({ date, open }) => ({ date, open }))
console.log(result)
您的代码的问题是 map、filter 和 reduce 的功能适用于数组而不适用于对象。
一个解决方案是将您的结构响应从对象对象更改为 -> 对象数组,如下所示
items:'{
{...},
{...}
}'
至:
items:'[
{...},
{...}
]'
我正在尝试过滤一个 API 调用,这样我就可以制作一个仅包含其一个属性的数组,但我似乎无法让它工作。
响应结构
"items": {
"1649169000": {
"date": "05-04-2022",
"date_utc": 1649169000,
"open": 16.08,
"high": 16.08,
"low": 15.91,
"close": 15.96,
"volume": 0
},
"1649172600": {
"date": "05-04-2022",
"date_utc": 1649172600,
"open": 15.96,
"high": 16,
"low": 15.89,
"close": 15.9,
"volume": 9990775
},
"1649176200": {
"date": "05-04-2022",
"date_utc": 1649176200,
"open": 15.9,
"high": 15.99,
"low": 15.89,
"close": 15.95,
"volume": 7927672
},
}
对于折线图,我需要一个包含所有“开放”值的数组,最好还有日期。 我已经尝试了所有我能想到的方法,但似乎唯一键让我失望了。
尝试映射对象时不断出现错误“TypeError:items.map 不是函数”。
items.map((item, index) => item.open)
我对使用 APIs 还很陌生,所以我想我只是遗漏了一些简单的东西。
谢谢!!
您的数据是一个对象,您可以使用 Object.values()
首先在数组中获取对象的值,然后像您一样使用 map
。
const data = {
"items": {
"1649169000": {
"date": "05-04-2022",
"date_utc": 1649169000,
"open": 16.08,
"high": 16.08,
"low": 15.91,
"close": 15.96,
"volume": 0
},
"1649172600": {
"date": "05-04-2022",
"date_utc": 1649172600,
"open": 15.96,
"high": 16,
"low": 15.89,
"close": 15.9,
"volume": 9990775
},
"1649176200": {
"date": "05-04-2022",
"date_utc": 1649176200,
"open": 15.9,
"high": 15.99,
"low": 15.89,
"close": 15.95,
"volume": 7927672
},
}
}
const result = Object.values(data.items).map((v) => v.open);
console.log(result);
你可以Array.prototype.map() the Object.values() of data
object, and select the properties you want by using Destructuring assignment{ date, open }
代码:
const data = {items: {'1649169000': {date: '05-04-2022',date_utc: 1649169000,open: 16.08,high: 16.08,low: 15.91,close: 15.96,volume: 0,},'1649172600': {date: '05-04-2022',date_utc: 1649172600,open: 15.96,high: 16,low: 15.89,close: 15.9,volume: 9990775,},'1649176200': {date: '05-04-2022',date_utc: 1649176200,open: 15.9,high: 15.99,low: 15.89,close: 15.95,volume: 7927672,}}}
const result = Object
.values(data.items)
.map(({ date, open }) => ({ date, open }))
console.log(result)
您的代码的问题是 map、filter 和 reduce 的功能适用于数组而不适用于对象。
一个解决方案是将您的结构响应从对象对象更改为 -> 对象数组,如下所示
items:'{
{...},
{...}
}'
至:
items:'[
{...},
{...}
]'