nodeMan
nodeMan

Reputation: 69

Node.js highest object value

With fs.readfile() i read an file and put the data of that file in an object. But how can i get the row with the highest value?

[ { id: 'AA', naam: 'de eerste', waarde: 100 },
  { id: 'BB', naam: 'de tweede', waarde: 120 },
  { id: 'CC', naam: 'de derde', waarde: 130 },
  { id: 'DD', naam: 'de laatste', waarde: 90 },
  { id: 'CC', naam: 'de derde', waarde: 150 },
  { id: 'CC', naam: 'de derde', waarde: 120 } ]

i mean the object row with the value of 150.

Upvotes: 3

Views: 110

Answers (2)

Pranav C Balan
Pranav C Balan

Reputation: 115242

Use Array#reduce method to reduce into a single object by custom function.

var data = [ { id: 'AA', naam: 'de eerste', waarde: 100 }, { id: 'BB', naam: 'de tweede', waarde: 120 }, { id: 'CC', naam: 'de derde', waarde: 130 }, { id: 'DD', naam: 'de laatste', waarde: 90 }, { id: 'CC', naam: 'de derde', waarde: 150 }, { id: 'CC', naam: 'de derde', waarde: 120 } ]

console.log(
  data.reduce(function(prev, next) {
    // compare object properties and return object with highest value
    return prev.waarde >= next.waarde ? prev : next;
  })
)

Upvotes: 5

Rajesh
Rajesh

Reputation: 24945

An alternate to @Pranav C Balan's answer could be use of for loop.

Logic

  • Loop over Object and create a dummy variable to hold object with max value.
  • Now on every iteration, if value is greater than current Max, replace dummy variable

var data = [ { id: 'AA', naam: 'de eerste', waarde: 100 }, { id: 'BB', naam: 'de tweede', waarde: 120 }, { id: 'CC', naam: 'de derde', waarde: 130 }, { id: 'DD', naam: 'de laatste', waarde: 90 }, { id: 'CC', naam: 'de derde', waarde: 150 }, { id: 'CC', naam: 'de derde', waarde: 120 } ]

var result = data[0];

for(var i = 1; i< data.length; i++){
  if(result.waarde < data[i].waarde)
    result = data[i];
}

console.log(result)

Also note that objects are pass by reference, so if after the loop, you do result.waarde = 0, this will override object in data as well.

result = data[i]; will just copy reference of data[i] in result and not entire object.

Upvotes: 1

Related Questions