Tratando de clasificar una variedad de artistas que vivieron durante el siglo XX. Los números en la propiedad year de la matriz son cadenas en lugar de números:
"years" : "1471 - 1528" Así que estoy tratando de dividir todos los años, convertirlos en números y luego comparar los números de esa manera. Pero cuando inicio sesión en la consola, aparece un error que dice "array[i].split is not a function". array.years.split(" ") y también obtuve un error. Solo estoy aprendiendo JS, así que tengan paciencia conmigo si es un error obvio, pero ¿alguien puede decirme qué estoy haciendo mal? Aquí hay una parte de la matriz:
const artists = [ { "name": "artist name", "years": "1884 - 1920"} , ... ] function getYears (array) { const newArray = []; for (let i = 0; i < array.length; i++) { const splitYears = array[i].split(" "); splitYears.splice("-") Math.floor(splitYears); if (splitYears[0] > 1900 && splitYears[1] < 2000) { return newArray.push(array[i].name); } } return newArray; } console.log(getYears(artists));Solo lo adivino porque no está mostrando el contenido completo de la matriz, pero sospecho que quiere algo más cercano a:
array[i].year.split(" ")
Además, en lugar de dividir en los espacios, tendría más sentido dividir los espacios y el guión juntos, usando una expresión regular que no se preocupa por cuántos espacios (si los hay) están presentes:
array[i].year.split(/\s*-\s*/)
Lo anterior devolverá una matriz de un solo elemento cuando hay un año, una matriz de dos elementos cuando se da un rango de años.
Un paso más sería convertir la matriz en números en lugar de cadenas:
array[i].year.split(/\s*-\s*/).map(n => parseInt(n, 10))