我有一个按键排序为asc的对象。
{
0: {},
4: {},
85: {},
266: {},
}
我希望获得所有按键的键> X(= 50)。
在这种情况下它将返回
{
85: {},
266: {},
}
我希望它具有高效性,因为我每500毫秒使用超过100个键进行此操作
答案 0 :(得分:2)
最简单,es6:
let obj = ...;
let keys = Object.keys(obj).filter(i => (parseInt(i) || 0) >= 50);
答案 1 :(得分:1)
尝试使用for..in
循环。
速度测试:https://jsperf.com/forinvsfilter
const obj = {
0: {},
4: {},
85: {},
266: {},
};
let res = {};
for (let r in obj) {
if (r > 50) {
res[r] = obj[r];
}
}
console.log(res);
答案 2 :(得分:1)
当你经常运行这个时,如果我们假设值只是在改变没有新的密钥引入/删除,那么我们可以找到那些按照标准配对的密钥,当它不匹配的那一刻我们就会破坏执行,我们走了:
var obj = {
0: {},
4: {},
85: {},
266: {},
};
var keys = Object.keys(obj).sort((a,b)=>a>b); //basically we are caching the keys
并在每个时间间隔
var res = {};
var x = 50; // whatever it is
var idx;
for(idx=keys.length-1;idx>=0;idx--) {
var key = keys[idx];
if(key>x) {
res[key] = obj[key];
} else {break;} //and here is the magic
}