Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/01/2007, 13:10
August
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 3 meses
Puntos: 10
Suma aritmetica de elementos no consecutivos de un array

Hola, me gustaria saber cual es la manera para sumar los elementos de un array, el indice de este array no es necesariamente consecutivo, por ejemplo puede ser que solo tengan valor numerico el indice 3, 5 ,9

Ya intente usando concat, pero devuelve una cadena concatenada, tambien intente con un ciclo, lo cual funciona el problema es por los elementos del array que no tienen valor

Código HTML:
<script>

var arrayprecio = new Array();
var precio=0
var preciotot=0;
var cual=0
var x=0
var numelements=0
function comprueba(esto,cual,precio){
    arrayprecio[cual]=precio
    preciotot=0
    numelements=arrayprecio.length;
    for(x=1; x <= numelements-1; x = x+1) {
        preciotot=preciotot+arrayprecio[x]
    }
    document.getElementById(cual).innerHTML = esto;
    document.getElementById("n").innerHTML = preciotot;

}
</script>
<form name="forma">
<input type="radio" value="a" onclick="comprueba(this.value,0,3);"  />
<input type="radio" value="b" onclick="comprueba(this.value,1,5);"  />
<b id="0"></b>
<b id="1"></b><br />
<b id="n"></b>
</form> 
Es chistoso pero en el ejemplo que puse los numeros de los arrays si son consecutivos, pero aun asi lo que devuelven es un NaN y en el otro de los inputs hace correctamente la suma

Lo que mi logica me dice es que lo que debo hacer es llenar primeramente todos los elementos del array con 0, el problema seria saber el numero de elementos del array, lo cual se podria saber cada vez que se hace click, pero para empezar no se como llenar los elementos vacios del array con 0

--Agregado--
Si estuvieramos en PHP, usaria un foreach, lo cual es la mezcla de un ciclo y un list (lista todos los elementos de un array), la ventaja de foreach sobre cualquier ciclo es que no recorre el array atravez de su indice numerico sino atravez de su key, lamentablemente no se como hacerlo en javascript, espero alguien me dija
--Agregado--

Gracias de antemano, espero que alguien pueda decirme

Última edición por August; 14/01/2007 a las 13:56