4

Say I have an array like the following:

var myArray = new Array();
myArray[0] = {ValueA: 10, ValueB:900};
myArray[1] = {ValueA: 50, ValueB:190};

How would I select the element that has the smallest value for ValueA?

I've used the following to get the max of arrays of numbers before:

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

but i'm not sure how this method could be used to find the max/min of an array of objects. Suggestions?

1

2 Answers 2

4

You could sort the array using a custom function then get the first and last members, e.g.

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

Smallest:

myArray[0].ValueA;

Biggest:

myArray[myArray.length - 1].ValueA;

If you don't want to modify the order of your array, copy it first (the objects wont be copied, they'll just be referenced).

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
Sign up to request clarification or add additional context in comments.

1 Comment

Nice -- what I would do. While this problem is solvable in O(n) bounds, O(n lg n) is generally quite sufficient (computer time is far cheaper than my development time :-)
0
Math.min.apply(Math,myArray.map(function(x){return x.ValueA;}));

2 Comments

This does not work right away, but is an interesting solution. It would be great if you could expand on this a little more and maybe test it or provide a JSFiddle
The OP is not looking for the minimum value, but rather the object(s) which have that minimum value.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.