我需要使用排序创建对象的蜡烛值 keys
:
var obj = [{1: 'a'}, {2:'b'}, {3:'c'}, {4:'d'}, {5:'e'},{6: 'a'}, {7:'b'},{8:'c'}, {9:'d'}, {10:'e'}]
根据键过滤此对象的最有效方法是什么?
例如,我想要:用 2 < keys <5
过滤的 obj或6 < keys < 9
(实际上,键是时间戳,值是价格数据)
编辑: 这是对象。这就是我所说的排序
var obj = [{1: 'a'}, {2:'b'}, {3:'c'}, {4:'d'}, {5:'e'},{6: 'a'}, {7:'b'},{8:'c'}, {9:'d'}, {10:'e'}]
最佳答案
您可以使用Object.keys获取键并reduce创建一个满足条件的kv对的新对象
var obj = {1: 'a', 2:'b', 3:'c', 4:'d', 5:'e',6: 'a', 7:'b',8:'c', 9:'d', 10:'e'}
var res = Object.keys(obj).reduce((acc, elem) => {
if (elem > 2 && elem < 5) acc[elem] = obj[elem]
return acc
}, {})
console.log(res)
看起来 obj 已更改
您可以通过简单的 .filter() 过滤新对象
var res = obj.filter(elem => Object.keys(elem)[0] > 2 && Object.keys(elem)[0] < 5)
如果您决定在评论中使用该结构
var obj = [{time: 1, value: 'a'},{time: 2, value: 'b'},{time: 3, value: 'c'},{time: 4, value: 'd'}]
var res = obj.filter(elem => elem.time > 2 && elem.time < 5)
关于javascript - 按键值过滤对象的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52259317/