javascript - 按键值过滤对象的有效方法

标签 javascript arrays object

我需要使用排序创建对象的蜡烛值 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/

相关文章:

javascript - 如何为不同路径的js文件仅使用一个RequireJS配置文件?

arrays - 对数组进行垂直排序而不是水平排序

java - php 响应时出现 JSON 错误

javascript - 修改 JSON 对象时出现 TypeError _______________ 不是函数

javascript - 使用扩展运算符创建数组

javascript - 使用 Backbone.js w/Require.js 的站点在 IE8 中的错误

javascript - 通过其中一个键将对象数组转换为单个对象

javascript - 来自对象 javascript 的嵌套 div

javascript - 如何在eclipse中调试jsp和javascript文件?

C++问题初始化一个对象两次