在javascript数组中查找最小值?

在javascript数组中查找最小值?,javascript,arrays,Javascript,Arrays,假设我有一个如下所示的数组: var myArray = new Array(); myArray[0] = {ValueA: 10, ValueB:900}; myArray[1] = {ValueA: 50, ValueB:190}; 如何为ValueA选择具有最小值的元素 我以前使用过以下方法来获取数字数组的最大值: var largest = Math.max.apply(Math, myArray); 但我不确定如何使用此方法来查找对象数组的最大/最小值。建议?您可以使用自定义函数

假设我有一个如下所示的数组:

var myArray = new Array();
myArray[0] = {ValueA: 10, ValueB:900};
myArray[1] = {ValueA: 50, ValueB:190};
如何为
ValueA
选择具有最小值的元素

我以前使用过以下方法来获取数字数组的最大值:

var largest = Math.max.apply(Math, myArray);

但我不确定如何使用此方法来查找对象数组的最大/最小值。建议?

您可以使用自定义函数对数组进行排序,然后获取第一个和最后一个成员,例如

myArray.sort(function(a, b) {return a.ValueA - b.ValueA;});
最小的:

myArray[0].ValueA;
最大的:

myArray[myArray.length - 1].ValueA;
如果不想修改数组的顺序,请先复制它(对象不会被复制,只会被引用)


很好,我会做的。虽然这个问题在
O(n)
范围内是可以解决的,
O(n lg n)
通常是足够的(计算机时间比我的开发时间要便宜得多:-)这不是马上就能解决的,但却是一个有趣的解决方案。如果您可以对此进行更多的扩展,并可能对其进行测试或提供一个JSFIDDLOP,那么这将是非常好的。OP并不是在寻找最小值,而是在寻找具有该最小值的对象。
var myArray = new Array();
myArray[0] = {ValueA: 10, ValueB:900};
myArray[1] = {ValueA: 50, ValueB:190};
myArray[2] = {ValueA: 25, ValueB:160};
myArray[3] = {ValueA: 5, ValueB:10};

var copy = myArray.slice();
alert(copy.length);

copy.sort(function(a, b) {return a.ValueA - b.ValueA;});

alert(copy[0].ValueA); // 5
alert(copy[copy.length - 1].ValueA); // 50
Math.min.apply(Math,myArray.map(function(x){return x.ValueA;}));