3

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.

1

2 Answers 2

5

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;
  })
)

Sign up to request clarification or add additional context in comments.

1 Comment

I have just formatted input data in 1 line so focus of answer remains on logic. If not required, please revert changes.
1

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.

Comments

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.