JavaScript - De año a siglo

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 21 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

De año a siglo

Publicado por Pau (1 intervención) el 12/02/2020 19:04:34
Buenas estoy empezando a ver el lenguaje de JavaScript con una pagina que te expone problemas i los tienes que solucionar. Me pidió lo siguiente:
Dado un año, regrese el siglo en que se encuentra. El primer siglo se extiende desde el año 1 hasta el año 100 inclusive, el segundo, desde el año 101 hasta el año 200 inclusive, etc.

Y buscando como hacerlo encontré la solución pero no entiendo el código, alguien me lo podría explicar os lo dejo por aqui:

1
2
3
4
5
6
7
8
9
10
11
function centuryFromYear(year) {
if(typeof year == 'string')
    if(year.toString().slice(-2) == '00')
      return year.toString().slice(0,2);
    else
      return (Math.floor(+year/100) +1).toString();
  else if(typeof year == 'number')
    return Math.floor((year-1)/100) + 1;
  else
    return undefined;
}


Gracias<3
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

De año a siglo

Publicado por Alejandro (532 intervenciones) el 12/02/2020 23:30:14
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Prácticamente hace lo mismo de 2 formas diferentes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function centuryFromYear(year) {
	if(typeof year == 'string') {
		// Forma 1: Si la variable year es cadena "2020"
		if(year.toString().slice(-2) == '00') {
			// Si los últimos 2 caracteres de la cadena son "00"
			// regresas los 2 primeros caracteres 2000=20, Siglo 20
			return year.toString().slice(0,2);
		}else{
			// Si los últimos 2 caracteres de la cadena no son "00"
			// regresas el resultado de dividir el año entre 100, eliminar la parte decimal y sumar 1
			// 2020/100= 20.2, 20+1= 21, Siglo 21
			return (Math.floor(year/100) +1).toString();
		}
	}else if(typeof year == 'number') {
		// Forma 2: Si la variable year es numérico 2020
		//  regresas el resultado de restar 1 al año, dividirlo entre 100, eliminar la parte decimal y sumar 1
		// 2020-1=2019, 2019/100=20.19, 20+1=21, Siglo 21
		return Math.floor((year-1)/100) + 1;
 
	}else {
		 // Si la variable year es diferente de cadena o numérico
		 // regresas indefinido.
		return undefined;
	}
}

Es buena practica de programación usar llaves aunque no sean necesarias, se le llama programación redundante, hacen mas legible el código, te dejo la solución sin tantos líos.
1
2
3
4
5
6
7
function centuryFromYear(year) {
	if( isNaN(Number(year)) ){
		return undefined;
	}else{
		return Math.floor((year-1)/100) + 1;
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 21 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

De año a siglo

Publicado por Pau (4 intervenciones) el 13/02/2020 10:16:53
Okay gracias ha sido de mucha ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

De año a siglo

Publicado por joel (895 intervenciones) el 13/02/2020 08:20:14
Hola Pau, nos puedes indicar cual es esa pagina que te expone problemas y los tienes que solucionar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

De año a siglo

Publicado por joel (895 intervenciones) el 13/02/2020 10:49:26
Muchas gracias Pau!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

De año a siglo

Publicado por joel (895 intervenciones) el 13/02/2020 11:39:05
Un código un poco mas corto:

1
2
3
function centuryFromYear(year) {
    return Math.ceil(year/100);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 21 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

De año a siglo

Publicado por Pau (4 intervenciones) el 13/02/2020 15:48:17
mmmm okay gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar