JavaScript - Funcion me retorna a NaN

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

Funcion me retorna a NaN

Publicado por juan (8 intervenciones) el 13/08/2019 07:45:01
Buenas como estan ?? tengo la siguiente duda si alguien puede ayudarme se lo agradeceria mucho !!¡¡
...Tengo el siguiente codigo , al cual a dos funciones le agrego un onClick, cuando corro el programa en el navegador el promedio me da NaN soy nuevo en java script y aun no veo el error, espero me puedan ayudar muchas gracias ante-mano.

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
var nombre = [];
var montos = [];
 
var nombrePrompt;
var montosPrompt ;
 
 
 
function CrearFactura()
{
do{
    nombrePrompt = prompt('Ingrese un nombre');
 
    }while(nombrePrompt === null || nombrePrompt === '' || !isNaN(nombrePrompt))
 
 
 
    nombre.push({nombre:nombrePrompt});
 
    do {
        montosPrompt = prompt  ("Digite monto")
    }
    while(montosPrompt === null || montosPrompt === '' || isNaN(montosPrompt))
 
    montos.push({montos:montosPrompt})
}
 
 
 
function  facturaRealizada()
{
 
for(let i = 0; i < nombre.length; i++)
{
 
console.log(nombre[i])
console.log(montos[i])
console.log(CalcularPromedio(montos[i]))
 
}
 
 
 
}
 
 
function CalcularPromedio(montosCliente)
{
 
let promedio = 0;
for (let i = 0; i < montosCliente.length; i++)
{
 
promedio += montosCliente[i]
 
}
 
return promedio / montosCliente.length
 
}
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

Funcion me retorna a NaN

Publicado por Alejandro (532 intervenciones) el 13/08/2019 16:03:18
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Estas generando 2 arreglos de jSon
1
2
3
4
5
6
7
8
9
10
nombres = [
	0=>{nombre:nombrePrompt},
	1=>{nombre:nombrePrompt},
	N=>{nombre:nombrePrompt}
];
montos = [
	0=>{monto:montoPrompt},
	1=>{monto:montoPrompt},
	N=>{monto:montoPrompt}
];

En la función facturaRealizada estas iterando el array de nombres y pasando el jSon del monto correspondiente al indice de nombres
En la función CalcularPromedio estas iterando los elementos del jSon recibido de la funcion facturaRealizada, entonces estas diciendo:
1
2
3
promedio = 0; // es entero
promedio += "monto"; // quieres sumar una cadena 
promedio += montoPrompt; // aunque el contenido sean números el tipo de la variable es cadena.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 17
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Funcion me retorna a NaN

Publicado por juan (8 intervenciones) el 14/08/2019 01:02:00
Mas o menos lo que interpreto es que el error viene por que el arreglo de montos esta declarada como una cadena cierto? mi pregunta seria como declarar o hacer ese arreglo un numero ?
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 Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Funcion me retorna a NaN

Publicado por Alejandro (532 intervenciones) el 14/08/2019 16:18:56
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Olvida mi lógica, pensaba que recorrías el jSon, sumando primero el indice y luego el valor. hice pruebas y no es así, me da undefined

No se bien que intentas porque de nada te sirve promediar un solo valor, echando a volar mi imaginación pienso que buscas algo como esto:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<script>
	registros=[];
	window.onload=function(){
		document.getElementById('cmdAdd').addEventListener('click',agregarRegistro);
		document.getElementById('cmdAvg').addEventListener('click',calcularPromedio);
	}
 
	function agregarRegistro(){
		do{
			nombrePrompt = prompt('Ingrese un nombre');
		}while(nombrePrompt!=null && (nombrePrompt=='' || !isNaN(nombrePrompt)));
 
		if(nombrePrompt!=null){
			do{
				montosPrompt = prompt('Digite monto');
			}while(montosPrompt!=null && (montosPrompt=='' || isNaN(montosPrompt)));
 
			if(montosPrompt!=null){
				registros.push({nombre:nombrePrompt,monto:Number(montosPrompt)});
				alert('Registro agregado');
			}
		}
	}
 
	function calcularPromedio(){
		t=registros.length
		if(t>0){
			promedio=0;
			for(i=0; i<t; i++){
				promedio += registros[i].monto;
			}
			promedio= promedio/t;
			alert(promedio);
		}else{
			alert('No hay registros');
		}
	}
</script>
 
<button type="button" id="cmdAdd">Agregar registro</button>
<button type="button" id="cmdAvg">Promedio</button>
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