将动态键映射到对象

问题描述

我有一个基于打字稿的网页抓取脚本,我从 HTML 页面获取一些属性

我的问题是我想将键变成我创建的类型。但由于我正在遍历元素列表(来自cheerio 库的概念)。

const image = prependImage($(elem).find('img').attr('data-src') || "")
const title = $(elem).find('.slotCardName').text()
const rank = Number($(elem).find('.widget-rank-small-pr').find('span').text()) || null
let providerAmount = 0;
$(elem).find('.providerCard-prewBlock-number').each((index,elem) =>{
    if(index === 0){
      providerAmount = Number($(elem).text()) 
    }
})
const restAttributes = $(elem).find('.propTable').children();

const mappedAttributes = restAttributes.map((index,element): {[key: string]: string} => {
    const [key,_value] = $(element).text().split(':')
    return {[key]: _value}
})

因为 [key] 只在运行时知道,所以我可以将数据映射到我的类型中,如下所示:

export interface ScrapeGames {
    image: string; 
    title: string; 
    rank: number | null; 
    providerAmount: number;
    RTP: string;
    'Max Win': string;
    'Min Bet': number;
    volatility: string;
    betways: number
    release: string
    devices: string
}

有什么办法可以将这些属性映射到上述类型中? 到目前为止,我最好的猜测是创建很多条件来检查键是否等于每个单独的值,然后进行硬编码。像这样的钥匙

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)