Nueva pregunta

Pregunta:

Fecha: 24-02-2015 05:57:43 (En Español)

¿Cómo obtener un elemento de un array Javascript en base a su posición?[Resuelta]

Hola a todos, agradecería si alguien me puede indicar de que forma puedo realizar esto, estoy necesitando obtener un elemento de un array javascript en base a su posición en el array (no en base a su indice).

Ejemplo del array:

var nombres = new Array();

nombres[5] = 'Walter';
nombres[3] = 'Fernando';
nombres[8] = 'Jose';


Yo necesito obtener el nombre que esta en la posición 2 del array (sin conocer el nombre y/o el indice), el único dato que tengo es:

var posicion = 2;


la función que necesito crear:

function getElementByPosition(array, position){
    var elemento = '';
    // ...... ??? ...... //
    return elemento;
}


Para el ejemplo dado, getElementByPosition(nombres, 2) me debería devolver "Fernando".

Agradezco cualquier comentario que me pueda ayudar a resolver/crear la función getElementByPosition().

Muchas gracias.

Saludos,
Fernando



Etiquetas: Array Javascript - Javascript - Pregunta Votos: 3 - Respuestas: 7 - Vistas: 27 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 24-02-2015 06:49:04
    function getElementByPosition(array, position)
    {
           var elemento = '';
           elemento = array[position];
           return elemento;
    }
      Votos: 0 - Link respuesta
     
  • Fecha: 24-02-2015 08:21:22 Justamente lo que no tengo es el indice, si uso esa función y le paso 5 en la posición me devolvería Walter.... y en realidad no existe la posición 5.

    Ahora estoy pensando en cambiar el array por uno multidimencional, tal vez esa sea la respuestas, algo como:

        var nombres = new Array();
        nombres[0][5] = 'Walter';
        nombres[1][3] = 'Fernando';
        nombres[2][8] = 'Jose';
        nombre[posicion][indice];
    


    La posición [posicion] es mantenida por un array indexado y el [indice] es el valor manejado por una colección (o podría ser el id de la persona en una base de datos).

    Espero que alguien me pueda dar una mano con esto, saludos!
      Votos: 1 - Link respuesta
     
  • Fecha: 24-02-2015 08:33:30 Aquí el ejemplo con la función de Loriems:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script type="text/javascript">
                //mi función
                function getElementByPosition(arrayDatos, position) {
                    var elemento = '';
                    elemento = arrayDatos[position]; //esto no es lo que quiero
                    return elemento;
                }
                
                //datos de prueba
                var nombres = new Array();
                nombres[5] = 'Walter';
                nombres[3] = 'Fernando';
                nombres[8] = 'Jose';
                nombres[2] = 'Loriems';
                
                //posición de la cual quiero obtener el valor
                var posicion = 2; //para el ejemplo, en el array nombres 'Fernando' esta en la posición 2 (debería imprimirse 'Fernando')
                
                alert(getElementByPosition(nombres, posicion)); //pero esto obviamente imprime 'Loriems', cuando debería ser 'Fernando', ya que 'Loriems' esta en la posición 4, y no 2 (2 es el indice)
            </script>
        </head>
    
        <body>
            Cuak!
        </body>
    </html>
    
      Votos: 1 - Link respuesta
     
  • Fecha: 24-02-2015 15:00:00 Aquí lo pude resolver, si alguien tiene una mejor idea por favor que comente... muchas gracias!

    La clave fue armar un array multidimencional nombre[posicion][indice];

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script type="text/javascript">
                //mi función
                function getElementByPosition(arrayDatos, posicion) {
                    var elemento = '';
                    elemento = arrayDatos[posicion-1];
                    return elemento;
                }
                
                function getNombreByUsuario(usuario){
                    return usuario[1];
                }
                
                //datos de prueba
                var nombres = [['5','Walter'],['3','Fernando'],['8','Jose'],['2','Loriems']];
                nombres.push(['1','Miguel']);
                
                //posición de la cual quiero obtener el valor
                var posicion = 2; //para el ejemplo, en el array nombres 'Fernando' esta en la posición 2 (debería imprimirse 'Fernando')
                
                alert(getElementByPosition(nombres, posicion)); // ahora obtengo el array del usuario Fernando
                alert(getElementByPosition(nombres, 5)[1]); //obtengo el nombre [1] del elemento inserto en la posición [5] (por medio del push anterior)
                alert(getNombreByUsuario(getElementByPosition(nombres, 5))); //aquí anido con una función más, evita que le pasemos el "[1]" (un poco más elegante)
            </script>
        </head>
    
        <body>
            Cuak!
        </body>
    </html>
    


    Saludos,
    Fernando
      Votos: 1 - Link respuesta
     
  • Fecha: 24-02-2015 15:20:37 Me lo encontré por ahí, creo que te puede ayudar..


    var data =  [
            {
                "text":"one","siteid":"1","chid":"default","userid":"8","time":1374156747
            },
            {
                "text":"two","siteid":"1","chid":"default","userid":"7","time":1374156735
            }
        ];
    
    var filterparams = {userid:'7', chid: 'default'};
    
    
    for(var intIndex=0;intIndex < data.length; intIndex++){
    eachobj = data[intIndex];
        var flag = true;
         for (var k in filterparams) {
            
            if (eachobj.hasOwnProperty(k)) {
                if(eachobj[k].toString() != filterparams[k].toString()){
                   flag = false;
                }
            }
        }
        if(flag){
               alert(intIndex);
        }
    }
      Votos: 1 - Link respuesta
     
  • Fecha: 07-03-2015 10:14:35 Hola, creo que no hay otra forma. (armar un array multidimencional nombre[posicion][indice];)
    Si imprimís en consola el array original te los ordenara según la clave que le has puesto, es decir se pierde el orden de creación. Y es así como los recorrerá.
    var nombres = new Array();
    
    nombres [5] = 'Walter';
    nombres [3] = 'Fernando';
    nombres [8] = 'Jose';
    
    console.log(nombres);
    


    imprimirá en consola :
    [3: "Fernando", 5: "Walter", 8: "Jose"]
      Votos: 3 - Link respuesta
     
  • Fecha: 15-03-2015 11:39:36 Muchas gracias a todos por las respuestas.

    Jorge, si, justamente esto que comentas es algo que me paso y me costo entender que era lo que pasaba (no encontre facilmente esa información, es un placer ver respuestas de tanta calidad, muchas gracias).

    Aquí les adjunto otro script que hace lo mismo pero de una forma más elegante por medio de Array.forEach() de Javascript.

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script type="text/javascript">
                function getElementByPosition(array, position) {
                    var count = 0;
                    var respuesta = '';
                    array.forEach(function(element) {
                        count++;
                        if (count === position) {
                            respuesta = element;
                            return;
                        }
                    });
                    if (respuesta !== '') {
                        return respuesta;
                    } else {
                        console.log('no hay un elemento en la posición: ' + position);
                    }
                }
    
                //array en donde se busca (hay muchas formas de crear este array, aquí una forma alternativa a la del ejemplo anterior)
                var nombres = new Array();
                nombres[nombres.length] = new Array(5, 'Walter');
                nombres[nombres.length] = new Array(3, 'Fernando');
                nombres[nombres.length] = new Array(8, 'Jose');
    
                //posición buscada
                var posicion = 2;
    
                //invocación de la busqueda
                var nombre = getElementByPosition(nombres, posicion);
    
                alert(nombre[1]);
    
            </script>
        </head>
        <body>
            cuak!
        </body>
    </html>


    Algo a mencionar del Array.forEach() es que no se puede hacer un "return" del elemento encontrado, por lo que me vi obligado a guardar el elemento en la variable "respuesta" (línea 13) y despues retornarla (línea 18).

    Saludos a todos!
      Votos: 2 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com