Tengo que escribir un programa que tome 2 matrices paralelas, una con el título de cinco libros y luego otra con las fechas de publicación de los libros. Todos los ejemplos que he visto usando una ordenación por selección están ordenando números enteros de menor a mayor. ¿Hay alguna manera de cambiar las fechas de la cadena en un valor numérico más adelante en el programa? Se supone que debo mostrar la lista inicial primero y luego nuevamente después de que se haya pedido.
Aquí está mi código para las matrices.
function getBooks() { var bookTitles = new Array(); bookTitles[0] = " To Kill a Mockingbird "; bookTitles[1] = " Jaws "; bookTitles[2] = " Don Quixote "; bookTitles[3] = " Moby-Dick "; bookTitles[4] = " Northern Lights "; var bookDates = new Array(); bookDates[0] = " July 11, 1960 "; bookDates[1] = " Febuary 1, 1974 "; bookDates[2] = " July 11, 1615 "; bookDates[3] = " October 18, 1851 "; bookDates[4] = " November 12, 1995 "; document.getElementById("book_output").innerHTML = bookTitles + "</br> " + bookDates; }HTML.
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>CIS 223 Lab Assignment #9</title> </head> <body onload="getBooks()"> <script type="text/javascript" src="Drackley_Lab9_2.js" charset="utf-8"></script> <h3 id="book_output"></h3> </body> </html>Una forma de resolver esto es combinar las dos matrices en una matriz de objetos con una marca de tiempo (de convertir la cadena de fecha en un objeto de fecha) y luego ordenar esa matriz según las marcas de tiempo. Luego puede usar la matriz ordenada para generar su HTML de salida:
var bookTitles = new Array(); bookTitles[0] = " To Kill a Mockingbird "; bookTitles[1] = " Jaws "; bookTitles[2] = " Don Quixote "; bookTitles[3] = " Moby-Dick "; bookTitles[4] = " Northern Lights "; var bookDates = new Array(); bookDates[0] = " July 11, 1960 "; bookDates[1] = " February 1, 1974 "; bookDates[2] = " July 11, 1615 "; bookDates[3] = " October 18, 1851 "; bookDates[4] = " November 12, 1995 "; books = bookTitles .map((e, i) => ({ title: e, date: bookDates[i], ts: new Date(bookDates[i]).getTime() })) .sort((a, b) => a.ts - b.ts) result = document.getElementById('result') result.innerHTML = '<table>' + books.map(o => '<tr><td>' + o.title + '</td><td>' + o.date + '</td></tr>').join('') + '</table>' <div id="result"></div>Puede convertir sus fechas en números enteros usando Date.parse() .
console.log(Date.parse(" July 11, 1960 ")); console.log(Date.parse(" Febuary 1, 1974 ")); console.log(Date.parse(" November 12, 1995 "));