javascript - 更改对象数据
问题描述
我有这个文本文件(800kb url),其中存储了一些 JSON 数据。从文本文件加载数据后,我想更改内容并循环它。
我使用这个示例简单函数做到了这一点;
var convertPriceFormat = function(content){
var obj = {};
for(var appid in content){
var gameEntry = content[appid];
for(var hashName in gameEntry){
var entry = gameEntry[hashName];
obj[hashName] = entry.price;
};
console.log(Object.keys(gameEntry).length);
};
return obj;
}
返回的对象中有四个子对象,它们都有关于3000
条目的,这不是一个巨大的数量。
每个条目的所有数据都是这样构造的;
'Pinstripe Suit Jacket': {
average_price: 0.02,
listings: 11,
volume: 1185.03,
price: 0.03
}
问题是;由于某些奇怪的原因,当我记录 gameEntry 的长度(即每个子对象的条目总数)时,第一个日志和第二个日志之间大约有 12 秒。
为什么是这样?
加载时间(相对自开始以来,数字是它必须循环的条目数量):
2373 '3.48s'
5769 '24.422s'
1405 '25.326s'
641 '25.436s'
解决方案
很可能该条目看起来并不像您认为的那样。试试这个代码或它的变体来追踪正在发生的事情。
var convertPriceFormat = function(content) {
var obj = {};
for (var appid in content) {
console.log(`appid: ${appid}`)
var gameEntry = content[appid];
for (var hashName in gameEntry) {
console.log(`hashName: ${hashName}`)
var entry = gameEntry[hashName];
obj[hashName] = entry.price;
};
console.log(Object.keys(gameEntry).length);
};
return obj;
}
const entry1 = {
'Pinstripe Suit Jacket': {
average_price: 0.02,
listings: 11,
volume: 1185.03,
price: 0.03
}
}
const entries = []
for (let i = 0; i < 3000; i++) {
entries.push(entry1)
}
console.log(`Number of entries: ${entries.length}`)
convertPriceFormat(entries.slice(0,3))
推荐阅读
- python - 当字典中有其他字母/数字时,如何检查字典中的值中的特定字母?
- ip-address - 目标 IP 地址 = '::'
- javascript - toBe() 字符串比较失败
- c# - EF 核心急切加载 - 多次加载相同的数据
- docker - 亚马逊linux的python3.8开发包
- azure - 在 Azure Devops 发布管道上的 Appsettings.Json 中添加数组元素通过魔术块配置转换
- java - Quarkus REST 服务异常处理
- reactjs - 使用 React(Django 后端)进行 axios 调用时出现 403 禁止请求
- azure - 将 Prefetch 与 Batch 一起使用会减慢 Azure 服务总线中的消息接收速度
- python - 图形故障 ttk 小部件