Search code examples
javascriptarraysminimax

Rapid way to find min and max values of a property in an array of objects


i have an array of objects like this:

arr = [
    {name: "Alex", value: 1}, 
    {name: "Bill", value: 2},
    {name: "Jim",  value: 3},
    {name: "Dim",  value: 5}
]

I want quick and clean way to have the min an max values of the value property

min = 1,
max = 5

Solution

  • Most performant would probably be a simple loop

    arr = [
        {name: "Alex", value: 1}, 
        {name: "Bill", value: 2},
        {name: "Jim",  value: 3},
        {name: "Dim",  value: 5}
    ]
    
    let min,max;
    
    for (var i=arr.length; i--;) {
      if ((!min) || arr[i].value < min) min = arr[i].value;
      if ((!max) || arr[i].value > max) max = arr[i].value;
    }
    
    console.log(min, max)

    Shortest to write, something like

    arr = [
        {name: "Alex", value: 1}, 
        {name: "Bill", value: 2},
        {name: "Jim",  value: 3},
        {name: "Dim",  value: 5}
    ]
    
    let m=Math,a=arr.map(z=>z.value);let [min,max]=[m.min(...a),m.max(...a)];
    
    console.log(min,max)