Quiero dar salida como una cadena de este código. Acabo de comprobar su longitud, pero no pude volver a generar una cadena como-('joy', 'james';). No sé dónde está mi problema con la cadena de salida. por favor ayuda a resolver este problema. gracias.
function oddFriend(name) { let oddFr = []; for (let i = 0; i < name.length; i++) { let frName = name[i].length; console.log(frName); if (frName % 2 != 0) { oddFr.push(frName); } } return oddFr; } console.log(oddFriend(["jon", "james", "robert", "george", "Leo", "joy"]));En la función oddFriend , está empujando la longitud del nombre a la matriz en lugar del nombre en sí. Intentando presionar name[i] en su lugar.
Solo debe verificar que la longitud del nombre no sea un número par y luego insertar el elemento en la matriz de salida, no la longitud del elemento.
function oddFriend(list) { let oddFr = []; for (let i = 0; i < list.length; i++) { const len = list[i].length; if (len % 2 !== 0) { oddFr.push(list[i]); } } return oddFr; } console.log(oddFriend(["jon", "james", "robert", "george", "Leo", "joy"])); También puede usar el filter para esto.
function oddFriend(list) { return list.filter(name => { return name.length % 2 !== 0; }); } console.log(oddFriend(["jon", "james", "robert", "george", "Leo", "joy"]));Su resultado es la cantidad de caracteres (longitud de la cadena) que es frName pero necesita que cada resultado sea la cadena real que es name[i] .
Código OP corregido
function oddFriend(name) { let oddFr = []; for (let i = 0; i < name.length; i++) { let frName = name[i].length; if (frName % 2 === 1) { oddFr.push(name[i]); } } return oddFr; } console.log(oddFriend(["jon", "james", "robert", "george", "Leo", "joy"]));Alternativa rápida y concisa
const array = ["jon", "james", "robert", "george", "Leo", "joy"]; let odd = array.flatMap(o => o.length % 2 === 1 ? [o] : []); console.log(odd);