I have an object in javascript like this:

{ "a":4, "b":0.5 , "c":0.35, "d":5 }

有没有一种快速的方法可以在不必遍历所有属性的情况下获得属性的最小值和最大值?因为我有一个巨大的物体,我需要每两秒钟得到最小/最大值.(对象的值不断变化).

推荐答案

There's no way to find the maximum / minimum in the general case without looping through all the n elements (if you go from, 1 to n-1, how do you know whether the element n isn't larger (or smaller) than the current max/min)?

您提到,这些值每隔几秒钟就会改变一次.如果您确切知道哪些值发生了更改,可以从以前的最大/最小值开始,只与新值进行比较,但即使在这种情况下,如果修改的其中一个值是旧的最大/最小值,您可能需要再次循环它们.

另一种 Select ——同样,只有在更改的值数量很小的情况下——是将值存储在树或堆等 struct 中,当新值到达时,您会适当地插入(或更新)它们.但根据你的问题,你能否做到这一点尚不清楚.

如果希望在循环遍历所有元素的同时获得给定列表的最大/最小元素,那么可以使用下面的代码段,但如果不遍历所有元素,就无法实现这一点

var list = { "a":4, "b":0.5 , "c":0.35, "d":5 };
var keys = Object.keys(list);
var min = list[keys[0]]; // ignoring case of empty list for conciseness
var max = list[keys[0]];
var i;

for (i = 1; i < keys.length; i++) {
    var value = list[keys[i]];
    if (value < min) min = value;
    if (value > max) max = value;
}

Jquery相关问答推荐

将搜索面板和服务器端与POST AJAX请求一起使用时出现DataTables错误

使用jQuery筛选器搜索输入仅适用于单词的一部分

jQuery .first() 方法返回第一个元素的集合

如何使 jQuery.ready 中定义的函数在全局可用?

如何从 onclick div 属性检测 Javascript 中的 control+click?

jQuery中的正则表达式字段验证

jQuery - 获取 ajax POST 的表单值

jQuery .get 错误响应函数?

将数据传递给 jQuery UI 对话框

如何在 JavaScript 或 jQuery 中规范化 HTML?

Jquery - 如何获取样式显示属性无/块

如何触发href元素的点击事件

使用 Jquery 更改页面标题

Bootstrap 折叠动画不流畅

我如何知道 jQuery 是否有待处理的 Ajax 请求?

测试空 jQuery Select 结果

检测页面是否已完成加载

获取jQuery中下拉列表的值

使用 TypeScript 设置 window.location

Bootstrap:在 Modal 中打开另一个 Modal