javascript - 从 JavaScript 数组中获取对象值的最大值和最小值

标签 javascript performance dojo

从 JavaScript 对象数组中获取最大值和最小值的最佳方法是什么?

给定:

var a = [{x:1,y:0},{x:-1,y:10},{x:12,y:20},{x:61,y:10}];
var minX = Infinity, maxX = -Infinity;
for( var x in a ){
  if( minX > a[x].x )
     minX = a[x].x;
  if( maxX < a[x].x )
     maxX = a[x].x;
}

看起来有点笨拙。有没有更优雅的方式,也许使用 dojo?

最佳答案

它不会更有效率,但只是为了咧嘴一笑:

var minX = Math.min.apply(Math, a.map(function(val) { return val.x; }));
var maxX = Math.max.apply(Math, a.map(function(val) { return val.x; }));

或者如果您愿意使用三行代码:

var xVals = a.map(function(val) { return val.x; });
var minX  = Math.min.apply(Math, xVals);
var maxX  = Math.max.apply(Math, xVals);

关于javascript - 从 JavaScript 数组中获取对象值的最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18798568/

相关文章:

javascript - 无法在 dojo dataGrid 中显示查询的功能

javascript - 我想使用react-native-image-picker捕获多个图像

javascript - lodash 将对象的对象转换为对象数组,包括其中的键

MySql 性能查询与具有 'explain' 输出的 View

python - 在 python 中将 float 转换为 int 的有效方法是什么?

angularjs - Dojo:带数据绑定(bind)的循环

javascript - IE 在 dojo AccordionPane 中强制使用水平滚动条

javascript - 使用 formvalidation.io 成功启动 Bootstrap 模式

javascript - 在空格上拆分短语,首字母缩略词除外

javascript - 为什么整数键的 "Map"操作比 JavaScript (v8) 中的 "Object"慢得多?