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

118
Visualizações
Ordenar matriz de años (incluido BCE)

Hay una serie de objetos que contienen un elemento químico con su año de descubrimiento:

 [ {"name": "hydrogen", "discovered": "1766"}, {"name": "boron", "discovered": "1808"}, {"name": "copper", "discovered": "9000 BCE"}, {"name": "argon", "discovered": "1894"}, {"name": "iron", "discovered": "before 5000 BCE"}, {"name": "phosphorus", "discovered": "1669"} ]

Lo que quiero es ordenar la matriz en términos del año descubierto, por lo que el más antiguo (cobre en este caso) debe ser el primer elemento y el más reciente (argón) debe ser el último elemento.

 //It should look like this in the end: [ {"name": "copper", "discovered": "9000 BCE"}, {"name": "iron", "discovered": "before 5000 BCE"}, {"name": "phosphorus", "discovered": "1669"}, {"name": "hydrogen", "discovered": "1766"}, {"name": "boron", "discovered": "1808"}, {"name": "argon", "discovered": "1894"} ]

El problema que encontré fueron las pocas palabras clave como "antes", "BCE", "CE", que no sé cómo manejar.

¿Hay alguna solución para manejar este problema?

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

0

9000 BCE es lo mismo que el año -9000 .

Simplemente puede tratar esas cadenas de datos BCE (la palabra clave before podría ignorarse, porque contiene BCE de todos modos) como -year en la función de sort , de la siguiente manera:

 const data = [{name:"hydrogen",discovered:"1766"},{name:"boron",discovered:"1808"},{name:"copper",discovered:"9000 BCE"},{name:"argon",discovered:"1894"},{name:"iron",discovered:"before 5000 BCE"},{name:"phosphorus",discovered:"1669"}]; const res = data.sort((a, b) => { const numA = (a.discovered.includes("BCE") ? -1 : 1) * a.discovered.replace(/\D/g, '') const numB = (b.discovered.includes("BCE") ? -1 : 1) * b.discovered.replace(/\D/g, '') return numA - numB }) console.log(res)
 .as-console-wrapper { max-height: 100% !important; top: 0; } /* ignore this */

about 4 years ago · Juan Pablo Isaza Relatório

0

Muy bien, primero debe crear una función que convierta las fechas a un formato común. En este ejemplo lo convertiré a un número relativo a 0 (año 0):

 const beforeRegExp = new RegExp('(before )\\d*( BCE)'); const bceRegExp = new RegExp('\\d*( BCE)'); function toCommonDateFormat(date) { if (beforeRegExp.test(date)) { return date.replace("before ", "").replace(" BCE", "") * -1 } else if (bceRegExp.test(date)) { return date.replace(" BCE", "") * -1 } else { return date * 1; } }

Ahora podemos usar esta función en una función de clasificación:

 function compareDates(firstDate, secondDate) { return toCommonDateFormat(firstDate) - toCommonDateFormat(secondDate); }

Y ahora, para unirlo todo:

 const list = [{ "name": "hydrogen", "discovered": "1766" }, { "name": "boron", "discovered": "1808" }, { "name": "copper", "discovered": "9000 BCE" }, { "name": "argon", "discovered": "1894" }, { "name": "iron", "discovered": "before 5000 BCE" }, { "name": "phosphorus", "discovered": "1669" } ] const beforeRegExp = new RegExp('(before )\\d*( BCE)'); const bceRegExp = new RegExp('\\d*( BCE)'); function toCommonDateFormat(date) { if (beforeRegExp.test(date)) { return date.replace("before ", "").replace(" BCE", "") * -1 } else if (bceRegExp.test(date)) { return date.replace(" BCE", "") * -1 } else { return date * 1; } } function compareDates(firstDate, secondDate) { return toCommonDateFormat(firstDate) - toCommonDateFormat(secondDate); } const orderedList = list.sort(function(firstItem, secondItem) { return compareDates(firstItem.discovered, secondItem.discovered); }); console.log(orderedList);

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