Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Comparto mis soluciones= 10_11 :)

1(0). Crea una función que reciba dos listas de números del mismo tamaño y devuelva una nueva lista con la suma de los elementos uno a uno.

let lista1 = [8, 2, 5, 3];
let lista2 = [8, 3, 10, 17];
let listaFinal =[];

function sumarListas(lista1, lista2) {
  for (let i = 0; i < lista1.length; i++) {
    listaFinal[i] = lista1[i] + lista2 [i];
  }
  return listaFinal.push();
}

sumarListas(lista1, lista2);
console.log(listaFinal);

1(1). Crea una función que reciba una lista de números y devuelva una nueva lista con el cuadrado de cada número.

let lista = [8, 2, 5, 3];
let cuadrados = [];

function calcularCuadrados(lista) {
  for (let i = 0; i < lista.length; i++) {
    cuadrados[i] = lista[i] * lista [i];
  }
  return cuadrados.push();
}

calcularCuadrados(lista);
console.log(cuadrados);

Me gustaría recibir retroalimentación.

2 respuestas

Es una buena solución. Si quieres retroalimentación te puedo proponer un par de cosas:

La primera es contemplar la posibilidad de inicializar la lista dentro de la misma función. Dependiendo del contexto del resto del código, esto puede tener ventajas; por ejemplo, si esa lista únicamente la vas a utilizar cuando ejecutes la función, lo mejor es únicamente crearla cuando se ejecute la función tal que así:

function sumarListas(lista1, lista2) {
    let listasSumadas = [];
    for (let i = 0; i < lista1.length; i++) {
        listasSumadas[i] = lista1[i] + lista2[i];
    }
    return listasSumadas;
}

Esto permite entonces añadir un plus en la modularidad de tu código y que sea más organizado en general. Pero si dicha lista (listaFinal en tu caso) la trabajaras también en otras funciones, la mayoría de veces será más cómodo trabajarla como lo haces tú, entonces simplemente hazlo dependiendo del caso.

Otra cosa que quizá te preguntes es el por qué no se utiliza .push() en el código que te mostré, y es porque básicamente no es necesario e incluso generaría problemas para lo que se quiere utilizar en este caso. Primero que todo, no es necesario porque con el bucle for tú ya estás creando cada índice por separado y en el orden que deseas, y le estas asignando un valor a cada uno; es como si fuera un .push() manual si lo quieres entender así. Y además generaría problemas porque recuerda que el return lo que hace es retornar un valor y no una acción en sí, por lo tanto no se va a retornar que se agreguen los números generados en la función a listaFinal sino el valor que genere eso, que en este caso sería la longitud (.length) del array después de realizar el push (o sea 4, en tu caso). Puedes problarlo así: en vez de ponerconsole.log(listaFinal);, ponconsole.log(sumarListas(lista1, lista2)); y verás que te retorna 4, y si quitas o pones elementos en tu lista te irá devolviendo la longitud de la misma actualizada.

Entonces bueno, en resumen lo del .push() es directamente un error porque no está retornando lo que deseas sino la longitud de la lista una vez realizado el .push() . Lo que quieres es que se ejecute la acción de incluir los valores en la lista, lo cual no es necesario con el .push() porque ya se está haciendo en el bucle for.

En tu caso lo que debes hacer es retornar únicamente la lista o incluso directamente no retornar nada, ya que la lista está por fuera de la función y la función lo único que está haciendo es llenarla con la suma de las otras 2 listas; si quieres que la función se "convierta" en listaFinal una vez la llene le pones elreturn listaFinal; y si quieres que únicamente haga la acción de llenarla ni le pongas return.

Por último y menos importante en este caso, recuerda también que hay un operador aritmético en Javascript para representar la potencia, es más cómodo usarlo que tener que multiplicar un valor consigo mismo varias veces como lo haces en tu funcióncalcularCuadrados();. El operador aritmético para representar la potencia es ** , y aquí te va un ejemplo usandolo en el ejercicio:

function cuadradoLista(lista) { 
    let listaAlCuadrado = [];
    for (let i = 0; i < lista.length; i++) {
        listaAlCuadrado[i] = lista[i]**2;
    }
    return listaAlCuadrado;
}

Como en este caso nos piden elevar al cuadrado el operador sería "** 2", pero si te piden al cubo sería "** 3" y así sucesivamente. Lo que haces es multiplicar el valor consigo mismo las veces que indiques.

Espero haber sido claro con la explicación y que hayas aprendido varias cosas. Si quedaste con alguna duda de algo no dudes en preguntar en otra respuesta (o si hay manera de mandar mensaje privado hazlo, porque no sé si a uno le notifican por las respuestas que se hagan en foros de otros).

PD: Intenta ser más explícito con los tópicos que pones en el foro porque o sino no te responderán nada. Yo me metí por curiosidad nada más pero no sabía que era una duda hasta que vi que querías retroalimentación. Lo digo para que consigas respuestas fácil y para que no vengan administradores a copiarte el mismo mensaje que ponen siempre de que si no es una duda no lo publiques. Te invito también a entrar en mi perfil, luego "posts en el foro" y ver mi publicación en el foro: "[Sugerencia] Una manera útil y didáctica de resolver los ejercicios del 6 al 11", ahí compartí mi solución a dichos ejercicios, con cositas extra que no pidieron pero están curiosas y todo bien explicado, por si te interesa aprender más acerca de las funciones en Javascript con los mismos ejercicios que nos pusieron. Espero haber sido de ayuda para vos.

Aquí también puedo proponerles la siguiente solución ya que solo hemos visto while y funciones, saludes a todos!

//6. Crear una función que calcule el promedio de los elementos de una lista

//6. Crear una función que calcule el promedio de los elementos de una lista
let listaDeNumeros=[1,2,3,4,5];
let contador=listaDeNumeros.length-1;
let promedio=0;
function calcularPromedioDeUnVector(){    
    if (contador>=0){
        promedio=promedio+listaDeNumeros[contador];
        console.log('Dato de lista '+listaDeNumeros[contador])
        console.log('Suma ' +promedio)
        console.log('Contador va en ' +contador)
        contador--;
        calcularPromedioDeUnVector();
    }else{
        promedio=promedio/listaDeNumeros.length;
    }

    return promedio;
}

/*function calcularPromedioDeUnVector(){    
    while (contador>=0){
        promedio=promedio+listaDeNumeros[contador];
        console.log('Dato de lista '+listaDeNumeros[contador])
        console.log('Suma ' +promedio)
        console.log('Contador va en ' +contador)
        contador--;
    }
    promedio=promedio/listaDeNumeros.length;
    return promedio;
}*/