Reputation: 69
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
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
Reputation: 24945
An alternate to @Pranav C Balan's answer could be use of for
loop.
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