martes, 30 de septiembre de 2014

How to sort an array of numbers from lowest to highest and highest to lowest

Trying to sort the items in an array that contain only numbers from lowest to highest and from highest to lowest may seem harder than you think but the true is that is very easy if you know how to do it. The problem is that the sort function converts arrays items to strings and for that reason it sorts them alphabetically by comparing character positions in the ASCII table. Then if you sort the array items you can't get the items in the way you want. You need to create a function that tells the sort function how to sort the data. Look at the code below:


  1. var class1 = [75, 53, 92, 100, 24, 55, 86,
  2.               85, 43, 8, 84, 82, 100, 51];
  3.               
  4. var class2 = [54, 92, 9, 65, 66, 
  5.               83, 44, 81, 88, 100];

  6. function compareNumbers(a, b) {
  7.   return a - b;
  8. }

  9. function compareNumbers2(a, b) {
  10.   return b - a;
  11. }

  12. console.log('Before sorting');
  13. console.log(class1);
  14. console.log(class2);

  15. class1.sort(compareNumbers);
  16. class2.sort(compareNumbers2);

  17. console.log('\nAfter sorting');
  18. console.log(class1);
  19. console.log(class2);


function compareNumbers(a, b) {
  return a - b;
}

function compareNumbers2(a, b) {
  return b - a;
}


The first function sorts the items in the array  from lowest to highest and the second function sorts the items in the array from highest to lowest.

As you see it is quite easy to sort the items in the way we want.

You can learn this and more at www.codeavengers.com. The excercise above was taken from Javascript level 2 course.

Español: Cómo ordenar de menor a mayor y de mayor a menor los elementos de un array cuando estos son números.

domingo, 28 de septiembre de 2014

JavaScript: create a function with an array as a parameter (calculating the mean of n number of students' scores)

The function calculates the mean of a class with any number of students. At first this was difficult to me cause I'm a novice in the use of arrays. Even when my score was 10/10, I had to re-read the program to understand what I did :p.
  1. var class1 = [75, 53, 92, 100, 24, 55, 86,
  2.               85, 43, 55, 84, 82, 99, 51];
  3.               
  4. var class2 = [54, 92, 72, 65, 66, 
  5.               83, 44, 81, 88, 78];

  6. function sum(array) {
  7.   var sum = 0;
  8.   for (i = 0; i < array.length; i++) {
  9.     sum += array[i]
  10.   }
  11.   return sum;
  12. }

  13. function mean(array) {
  14.   return sum(array) / array.length;
  15. }

  16. var mean1 = mean(class1);
  17. var mean2 = mean(class2);

  18. console.log('Class 1 mean: ' + Math.round(mean1));
  19. console.log('Class 2 mean: ' + Math.round(mean2));
Class 1 mean 70
Class 2 mean 72

The program above was made in codeavengers.com 


Español: El programa arriba escrito calcula la media de n estudiantes en una clase cualquiera. La amplitud no es fija, sólo depende del array. Fue hecho en codeavengers en el curso de javascript nivel 2.

JavaScript no es tan fácil / JavaScript is not so easy

En codeavengers llevo ya terminado el primer nivel de JavaScript y hasta ahora el 82% del segundo nivel. En html llevo el 52% del primer nivel. ¿Qué puedo decir de mi trayecto en el mundo del front end development? Que no es fácil.

He visto por ahi unos cursos de Udemy y encontré uno en especial que decía que en unas semanas te hacías web developer. Miren, la verdad no me creo nada. Tan sólo yo, terminé todo el curso de html en codecademy y el nivel básico de teamtreehouse, además de lo propio en codeavengers y la verdad me veo lejos de ser un web developer. Por el lado de estrictamente javascript, hace un rato me atoré un poco con unos ejercicios de arrays, mezclados con funciones y loops, que en realidad son básicos, pero no por eso son fáciles. Hay que tener la mente muy lógica y poder saber cómo va a avanzando un programa a medida que corren las líneas de código.

Ayer estuve dándole al curso de HTML y aunque se me hace mucho menos exigente mentalmente que el de javascript, siento que es difícil en el sentido que para ser un experto uno debe hacer bastantes sitios web. Yo hice uno básico en el curso de teamtreehouse y sólo eso. Pero soy necio y sigo avanzando.

Veo constantemente nuevas tecnologías que surgen relacionadas al HTML o javascript y las desconozco pues sigo en la parte básica de ambos conocimientos que no es corta sino que es extensa. Quisiera ya sabe rmanejar node.js o algún otro framework pero tendré qué esperar.

Por cierto que de Udacity ya me llegó la forma, la cual llené y regresé, para poder acceder al curso de front end developer. Udacity junto con empresas y creo que instituciones educativas, está desarrollando algo que se llama nonodegrees, de lo cual les hablaré después. Como sea, si tú quieres aprender a programar en serio, sí te recomiendo javascript como lenguaje base, pero también te advierto que es más dificil que hablar un idioma o mejor dicho, es como aprender a hablar un idioma pero a nivel excelente. No puedes medio saber javascript, debes manejarlo con un nivel alto de destreza para poder hacer algo que valga la pena. Yo apenas estoy a medio camino y ya me tardo algo de tiempo en resolver algunas lecciones.No obstante si te gusta adelante.

Es hora de dormir. Buen código.