Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I find the two positions with the two highest numbers in a multidimensional array?

I’m working in a JavaScript project where in this case I am trying to get the two arrays with the biggest value in position 2.

[-20.172, 35.251, 0],
[-16.368, 21.792, 26.81],
[-29.311, 18.393, 0],
[14.54, 15.23, 0],
[-1.61, 12.91, 27.692],
[0, 0, 0]

the intended answer should be like this:

[-16.368, 21.792, 26.81],
[-1.61, 12.91, 27.692]

I can’t sort by the ones that have a zero and the ones who doesn’t have it, some other cases in the project I’m working could possibly have different numbers on the position 2.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

any suggestions?

>Solution :

Using Array#reduce:

const arr = [
  [-20.172, 35.251, 0],
  [-16.368, 21.792, 26.81],
  [-29.311, 18.393, 0],
  [14.54, 15.23, 0],
  [-1.61, 12.91, 27.692],
  [0, 0, 0]
];

const [max1Index, max2Index] = arr.reduce(([max1Index, max2Index], { 2: num }, index) => {
  const max1 = arr[max1Index][2], max2 = arr[max2Index][2];
  return num > max1
    ? [index, max1Index]
    : num > max2
      ? [max1Index, index]
      : [max1Index, max2Index];
}, [0, 0]);

console.log(arr[max1Index], arr[max2Index]);
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading