gpt4 book ai didi

javascript - 创建 "map"以从各种格式化对象中获取相关数据

转载 作者:行者123 更新时间:2023-12-03 06:47:41 26 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本从不同位置提取数据,因此它们的格式不同,然后将它们放入“已看到”项目列表中。然后,我们会定期进行轮询,检查是否已经看到它,如果没有,则相应地附加它。

考虑到将来可能会添加更多资源,我认为创建一个通用脚本来接受提取的数据和一个随附的映射(根据数据集键描述所需的键)是有意义的。

/**
* @param data
*
* Example:
* data: {
* 0: {
* date: '2016-12-23 00:34:56',
* ...
* account: {
* name: 'name'
* }
* },
* 1: {
* date: '...',
* ...
* account: {
* name: 'test'
* }
* }
* }
*
* @param map
*
* Example:
* map: {
* 'username': 'account.name'
* // could have all sorts here
* // i.e. 'date': 'account.date_created'
* }
*
* We only care about data[X].account.name and need to map this against our "global" identifier: username
*/
public process(data: any, map: any) {

let seen: any = {}; // blank object

// loop through each data object
for(let i = 0; i < data.length; i++) {

// data[i] = {date: '2016-12-23 00:34:56', ...}

// loop through each key in the map
for(let key in map) {

// insert a new record
// ie. seen = {username: 'name'}
// ie. seen = {username: 'test'}
// after looping, we get seen = {0: {username: 'name'}, 1: {username: 'test'}}

seen = {[key] : data[i][map[key]]};

}

}

// process list of seen objects

}

不幸的是,seen = {[key] : data[i][map[key]];只会返回seen = {username: undefined}。我尝试格式化 map ,以便用户名键值读取 ["account"]["name"] 但无济于事;它不起作用,并且不知道访问对象的任何其他方式,我现在完全不知所措。

我想要实现的目标可能吗?如果是这样,我如何创建一个获取相关数据的 map ?

最佳答案

您不能这样做,因为 account.name 不是 data 的属性,但 name 是嵌套对象的属性帐户。您可以调用 eval(),这不是最好的解决方案,或者您可以编写一个相当简单的解析器函数来解决属性访问器 . 表示法,解析每个直到目标已到达属性(在本例中为 accountname)。

这是一个jsfiddle:https://jsfiddle.net/dariusvs/sxjj3b97/

关于javascript - 创建 "map"以从各种格式化对象中获取相关数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37655029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com