Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

238
Visualizações
Sort 2 dimension array based in 1st column where the value is a 'version-dotted' string JS

Let me exemplify.

Input:

I have a 2 dimension array:

arr = [['13.12', 'www.randomLinkHere.com'], ['13.6', 'www.randomLinkHere.com'], ['13.2', 'www.randomLinkHere.com']]

And I want to sort them based on the first column => arr[i][0].

But when I sort them using the simple comparison function (a - b), it returns something like:

output: [['13.12', 'www.randomLinkHere.com'], ['13.2', 'www.randomLinkHere.com'], ['13.6', 'www.randomLinkHere.com']]

But the expected result must be:

expected 'version sorted': [['13.2', 'www.randomLinkHere.com'], ['13.6', 'www.randomLinkHere.com'], ['13.12', 'www.randomLinkHere.com']]

Like it was an object.

Reference: Expected result as reference

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

const arr = [
    ['13.12', 'www.randomLinkHere.com'],
    ['13.6', 'www.randomLinkHere.com'],
    ['13.2', 'www.randomLinkHere.com'],
];

const sortArr = (arr) => {
    return arr.sort((a, b) => {
            if (+a[0] > +b[0]) return 1;
            return 0;
        }).reverse();
};

console.log(sortArr(arr));

about 4 years ago · Juan Pablo Isaza Relatório

0

A version that should allow somewhat arbitrary lengths of version numbers:

const arr = [
  ["13.12", "www.randomLinkHere.com"],
  ["13.6", "www.randomLinkHere.com"],
  ["13.2", "www.randomLinkHere.com"],
  ["14.1", "www.randomLinkHere.com"],
  ["13.110", "www.randomLinkHere.com"],
  ["13.11.3", "www.randomLinkHere.com"],
  ["13.1090.3", "www.randomLinkHere.com"],
];

const compare_versions = (a, b) => {
  const a_parts = a.split('.');
  const b_parts = b.split('.');
  
  for(let i = 0; i < Math.max(a_parts.length, b_parts.length); i++) {
    let comp = +(a_parts[i] ?? 0) - +(b_parts[i] ?? 0);
    if(comp !== 0) return comp;
  }
  
  return 0;
};

const sortedArr = arr.sort(([a], [b]) => compare_versions(a, b));
console.log(sortedArr);

about 4 years ago · Juan Pablo Isaza Relatório

0

const arr = [
  ["13.12", "www.randomLinkHere.com"],
  ["14.1", "www.randomLinkHere.com"],
  ["15.1", "www.randomLinkHere.com"],
  ["15.3", "www.randomLinkHere.com"],
  ["16.2", "www.randomLinkHere.com"],
  ["13.2", "www.randomLinkHere.com"],
  ["13.13", "www.randomLinkHere.com"],
  ["13.113", "www.randomLinkHere.com"],
  ["1.2", "www.randomLinkHere.com"],
  ["2.2", "www.randomLinkHere.com"],
  ["125.2", "www.randomLinkHere.com"],
];

const sortedArr = arr.sort(
  (a, b) =>
    a[0].split(".").reduce((acc, val) => acc * 10000 + parseFloat(val), 0) -
    b[0].split(".").reduce((acc, val) => acc * 10000 + parseFloat(val), 0)
);
console.log(sortedArr);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda