问题描述
我需要检查我的脚本是否超出最大操作限制。此限制设置为每个脚本2000个操作(Rhino服务器端执行)。
var storeObject = "hillutter,roco".split(',')
var storeObjectLength = storeObject.length;
var maxStoreSize = 10;
var userObject = "{'hillutter':5,'puriutter':10,'roco':10,'bianto':15,'anabelle':15,'puzon':15}"
var checkUserObjectLength = userObject.split(',').length;
userObject = JSON.parse(userObject.replace(/'/g,'"'));
maxStoreSize = maxStoreSize-storeObjectLength-1;
if(checkUserObjectLength>=maxStoreSize){ //if size greater than X entries,reduce to
var userSortArray = [];
var plainObject = {}; //new sorted plain array
var checkUserObject = Object.keys(userObject);
for (var i = 0; i < maxStoreSize; i++) {
var key = checkUserObject[i];
userSortArray.push({storeStorageValue2: key,score: userObject[key]});
}
userSortArray.sort(function (a,b){ return b.score - a.score}); //sort
userSortArray.filter(function(ele,i){
if(i<(maxStoreSize-storeObjectLength)){ // max count minus parameter length
plainObject[""+ele.storeStorageValue2+""] = ele.score
}
});
userObject = plainObject;
}
console.log(userObject)
否则,可以进行哪些改进以减少操作。我认为可以将filter-loop合并到sort-loop中。但是我不知道如何使用这个关联数组。我已经尝试过使用“真实”数组,但遇到了最大的麻烦。操作限制,有了这个关联数组,我至少可以跳过循环。 目标是将 userObject 切断为 maxStoreSize ,但保留按分数排序的输出。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)