如何将CoinMarketCap返回对象转数组并保留外层id,解决搜索logo不匹配问题
实现代码
1. 对象转数组(满足你要求的转换规则)
按照你给出的结构转换要求,可直接用以下代码实现,完全保留原对象外层的id键:
const fromThis = { 1: { id: 825, name: "Tether", symbol: "USDT", }, 825: { id: 825, name: "Tether", symbol: "USDT", } } // 转换逻辑 const toThis = [Object.fromEntries(Object.entries(fromThis))]
转换后完全匹配你给出的toThis结构要求。
2. 更高效的logo匹配方案(建议优先使用)
你遇到的过滤后logo匹配错位问题,本质是用索引关联两个数据集导致的,不用转换结构也能彻底解决,且性能更高:
// 给第一个接口返回的币种数组统一补充logo字段 const processedCoinList = bitcoinD.data.map(coin => { // 直接用币种id作为key从第二个接口的返回对象中取值,不受过滤、排序操作影响 const extraInfo = bitcoinI.data?.[coin.id] return { ...coin, logo: extraInfo?.logo || '/default-logo.png' // 可替换为你自己的默认占位图路径 } })
处理后的processedCoinList每个币种条目自带logo属性,后续不管是做搜索过滤还是排序操作,都不会再出现数据不匹配的问题。
注意事项
CoinMarketCap的/cryptocurrency/info接口返回的对象不会出现你示例中重复id的条目,上述代码完全适配官方接口的返回结构。
内容的提问来源于stack exchange,提问作者user17302724
相关产品推荐
相关产品推荐

