Elementos de un array

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • LuisDavid

    Elementos de un array

    Hola grupo que tal, tengo una inquietud no se si sea sencillo, o me
    estoy confundiendo; la cuestion es esta:
    tengo este array.
    var lista = new Array("uno","do s",tres","cuatr o");
    ahora como hago para que en una variable me tome un elemento del array
    lista; dependiendo de la longitud del elemento; en este caso que me
    extraiga el elemento: lista[3] por ser:
    lista[3].length = 6 //el numero de mayor longitud respecto a los otros
    elementos del array lista; ahora los elementos del array lista estan
    "aleatoriamente "; no necesariamente tienen que estar en orden, y la
    longitud del array puede ser distinto:
    en este caso es lista.length = 4; //este valor puede variar.
    "en pocas palabras quiero tomar el elemento de la lista de mayor
    longitud";
    es posible hacer eso o esque le pido mucho al new Array?, le agradesco
    me puedan ayudar. gracias grupo. que tengan buen dia.
  • SAM

    #2
    Re: Elementos de un array

    LuisDavid a écrit :
    Hola grupo que tal, tengo una inquietud no se si sea sencillo, o me
    estoy confundiendo; la cuestion es esta:
    tengo este array.
    var lista = new Array("uno","do s",tres","cuatr o");
    ahora como hago para que en una variable me tome un elemento del array
    lista; dependiendo de la longitud del elemento; en este caso que me
    extraiga el elemento: lista[3] por ser:
    lista[3].length = 6 //el numero de mayor longitud respecto a los otros
    elementos del array lista; ahora los elementos del array lista estan
    "aleatoriamente "; no necesariamente tienen que estar en orden, y la
    longitud del array puede ser distinto:
    en este caso es lista.length = 4; //este valor puede variar.
    "en pocas palabras quiero tomar el elemento de la lista de mayor
    longitud";
    es posible hacer eso o esque le pido mucho al new Array?, le agradesco
    me puedan ayudar. gracias grupo. que tengan buen dia.

    On n'a rien compris à ces histoires de longitudes !

    Puedes muy bien escoger(clasifi car) tu tablero (array) sin crear un nuevo :
    lista = lista.sort();
    ò tanbien directamente :
    lista.sort();


    var lista = [ 1, 3, 5, 4, 2];
    alert('lista original : ' + lista);
    alert('el mayor = '+ lista.sort()[lista.length-1]);
    alert('lista modificada : ' + lista);


    --
    sm

    Comment

    • Thomas 'PointedEars' Lahn

      #3
      Re: Elementos de un array

      LuisDavid wrote:
      tengo este array.
      var lista = new Array("uno","do s",tres","cuatr o");
      var lista = ["uno", "dos", tres", "cuatro"];

      is also possible. See <http://PointedEars.de/es-matrix>.
      ahora como hago para que en una variable me tome un elemento del array
      lista; dependiendo de la longitud del elemento; en este caso que me
      extraiga el elemento: lista[3] por ser:
      lista.splice(3, 1);

      <http://groups.google.c om/groups?as_q=rem ove+element+arr ay&as_ugroup=co mp.lang.javascr ipt&scoring=d&f ilter=0>
      lista[3].length = 6
      You would try to assign 6 to the `length' property of the String object that
      represents lista[3] ("cuatro"). Since this property is read-only, it will
      not work.
      [...]
      en este caso es lista.length = 4; //este valor puede variar.
      That would delete lista[4], lista[5], and so on.


      HTH

      PointedEars
      --
      Use any version of Microsoft Frontpage to create your site.
      (This won't prevent people from viewing your source, but no one
      will want to steal it.)
      -- from <http://www.vortex-webdesign.com/help/hidesource.htm>

      Comment

      • SAM

        #4
        Re: Elementos de un array

        LuisDavid a écrit :
        "en pocas palabras quiero tomar el elemento de la lista de mayor
        longitud";
        var lista = ["uno","dos","tr es","cuatro",'c inco','seis'];
        var k = '';
        for(i in lista) if(lista[i].length>k.lengt h) k = lista[i];
        alert('El elemento más largo es : '+k);

        --
        sm

        Comment

        • LuisDavid

          #5
          Re: Elementos de un array

          On 24 sep, 03:48, SAM <stephanemoriau x.NoAd...@wanad oo.fr.invalid>
          wrote:
          LuisDavid a écrit :
          >
          "en pocas palabras quiero tomar el elemento de la lista de mayor
          longitud";
          >
          var lista = ["uno","dos","tr es","cuatro",'c inco','seis'];
          var k = '';
          for(i in lista) if(lista[i].length>k.lengt h) k = lista[i];
          alert('El elemento más largo es : '+k);
          >
          --
          sm
          SAM mira el codigo funciona es justo lo que queria pero sere un poco
          mas especifico mira el array lista no se escribe textualmente como
          esta; sino que es generado por el metodo match que extrae elementos de
          una cadena:

          <script>
          var cadena = "elemtos(un o), documentos(tres ), portales(cinco) ,
          ejecutables(tre s)"
          var lista = cadena.match(/(\w*)/g);
          //var lista = ["uno","tres","c inco","tres"];
          var k = '';
          for(i in lista) if(lista[i].length>k.lengt h) k = lista[i];
          alert('El elemento más largo es : '+k);
          </script>

          En FireFox, Netscape, Opera, Safari. k almacena esto:
          El elemento mas largo es: cinco// esta OK.

          Pero en IE k almacena esto:
          El elemento mas largo es: elemtos(uno), documentos(tres ),
          portales(cinco) , ejecutables(tre s)

          IE el metodo match si lo reconoce como array (al vizualizarlo) pero al
          pasar el codigo no!!;
          IE es el monton por eso quiero que funcione tambien ahi.
          Sin embargo los otros navegadores si: me podes ayudar porfavor,
          "la idea es que quiero extraer el contenido del parentesis mas largo
          de la variable cadena" o hay otra forma de hacerlo?,

          var cadena es generada por un codigo mas atras, que puede variar de 1
          parentesis() a 9 parentesis() en contenidos, (varia tambien la
          longitud del array), en este caso yo quiero extraer el contenido mas
          largo del parentesis.
          Pero IE creo que le asusta el metodo match. solo lo hace si lo paso
          como array textual asi:

          var lista = ["uno","tres","c inco","tres"];

          .. porque??? ayuda porfavor. gracias de antemano Grupo.

          Comment

          • Jorge

            #6
            Re: Elementos de un array

            On Sep 25, 5:51 pm, LuisDavid <luisdavi...@gm ail.comwrote:
            >
            IE el metodo match si lo reconoce como array (al vizualizarlo) pero al
            pasar el codigo no!!;
            IE es el monton por eso quiero que funcione tambien ahi.
            Sin embargo los otros navegadores si: me podes ayudar porfavor,
            "la idea es que quiero extraer el contenido del parentesis mas largo
            de la variable cadena" o hay otra forma de hacerlo?,
            >
            Quieres decir que en IE falla el .match() y la expresión regular ?
            En qué versión(es) de IE ?
            Puedes poner una muestra de cadena (la más complicada si puede ser, de
            esas que dices con muchos niveles de paréntesis) a la que aplicas la
            expresión regular con el .match() y falla ?

            Yo aquí partiéndome los cuernos en guiri, y llegas tu y venga que
            ancha es Castilla, vamos qué jeta no ?

            Suerte,
            --
            Jorge.

            Comment

            • SAM

              #7
              Re: Elementos de un array

              Le 9/25/08 5:51 PM, LuisDavid a écrit :
              On 24 sep, 03:48, SAM <stephanemoriau x.NoAd...@wanad oo.fr.invalid>
              wrote:
              >var lista = ["uno","dos","tr es","cuatro",'c inco','seis'];
              >var k = '';
              >for(i in lista) if(lista[i].length>k.lengt h) k = lista[i];
              >alert('El elemento más largo es : '+k);
              >
              SAM mira el codigo funciona es justo lo que queria pero sere un poco
              mas especifico mira el array lista no se escribe textualmente como
              esta; sino que es generado por el metodo match que extrae elementos de
              una cadena:
              >
              <script>
              var cadena = "elemtos(un o), documentos(tres ), portales(cinco) ,
              ejecutables(tre s)"
              var lista = cadena.match(/(\w*)/g);
              \w Matches any alphanumeric character from the basic Latin alphabet,
              including the underscore. Equivalent to [A-Za-z0-9_].
              * Matches the preceding item 0 or more times

              That will match all suites of alphanumeric characters.

              Esto va a sacar todos los séquitos de carácteres alfanuméricos (incluido
              los vacías)

              Try (in location bar of your browser(s) ) :

              javascript:var cadena = "elemtos(un o), documentos(tres ),
              portales(cinco) ,ejecutables(tr es)";var lista =
              cadena.match(/(\w*)/g);alert(lista) ;

              Result :
              elemtos,,uno,,, ,documentos,,tr es,,,,portales, ,cinco,,,ejecut ables,,tres,,

              Si lo que quieres haber esta : '(uno),(tres),( cinco),(tres)'
              hay de far : cadena.match(/\(\w*\)/g);


              javascript:var cadena = "elemtos(un o), documentos(tres ),
              portales(cinco) ,ejecutables(tr es)";var lista =
              cadena.match(/\(\w*\)/g);var k='';for(i in lista)
              if(lista[i].length>k.lengt h)k=lista[i];alert(k);

              would have to work fine with other browsers than IE

              With IE (por IE) :

              javascript:var cadena = "elemtos(un o), documentos(tres ),
              portales(cinco) ,ejecutables(tr es)";var lista =
              cadena.match(/\(\w*\)/g);alert('lista = '+lista);var
              k='';for(i=0,n= lista.length;i< n;i++){alert('l ista['+i+'] = '+lista[i]);
              if(lista[i].length>k.lengt h)k=lista[i];}alert('mas largo = '+k);

              //var lista = ["uno","tres","c inco","tres"];
              var k = '';
              for(i in lista) if(lista[i].length>k.lengt h) k = lista[i];
              alert('El elemento más largo es : '+k);
              </script>
              >
              En FireFox, Netscape, Opera, Safari. k almacena esto:
              El elemento mas largo es: cinco// esta OK.
              No, con el mio Firefox ho : 'ejecutables'


              javascript:var cadena = "elemtos(un o), documentos(tres ),
              portales(cinco) ,ejecutables(tr es)";var lista =
              cadena.match(/\(\w*\)/g);var k='';for(i in lista)
              if(lista[i].length>k.lengt h)k=lista[i];alert(k);

              would have to work fine with other browsers than IE

              With IE (por IE) :

              javascript:var cadena = "elemtos(un o), documentos(tres ),
              portales(cinco) ,ejecutables(tr es)";var lista =
              cadena.match(/\(\w*\)/g);alert('lista = '+lista);var
              k='';for(i=0,n= lista.length;i< n;i++){alert('l ista['+i+'] = '+lista[i]);
              if(lista[i].length>k.lengt h)k=lista[i];}alert('mas largo = '+k);
              Pero en IE k almacena esto:
              El elemento mas largo es: elemtos(uno), documentos(tres ),
              portales(cinco) , ejecutables(tre s)
              (snip)
              . porque??? ayuda porfavor. gracias de antemano Grupo.
              Porque quando hace 'for(i in lista)'
              IE añade 'input' en primero index
              e otros indexes que no sè los que estan.

              test :

              javascript:var cadena = "elemtos(un o), documentos(tres ),
              portales(cinco) ,ejecutables(tr es)";var lista =
              cadena.match(/\(\w*\)/g);for(in in lista)alert('in dex =
              '+i+'\nlista['+i+'] = '+lista[i]);


              so, I think you must do : for(i=0, n=lista.length; i<n; i++)

              <script>
              var cadena = "elemtos(un o), documentos(tres ), portales(cinco) ,
              ejecutables(tre s)"
              var lista = cadena.match(/(\w*)/g);
              //var lista = ["uno","tres","c inco","tres"];
              var k = '';
              for(i=0, n=lista.length; i<n; i++)
              if(lista[i].length>k.lengt h) k = lista[i];
              alert('El elemento más largo es : '+k);
              </script>



              Lo que sigue, utilizando 'for(i in lista)', funciona también con IE :

              javascript:var cadena = "elemtos(un o), documentos(tres ),
              portales(cinco) ,ejecutables(tr es)"; var
              lista=cadena.ma tch(/\(\w*\)/g).toString().s plit(','); var k=''; for(i in
              lista) if(lista[i].length>k.lengt h)k=lista[i];alert(k);

              lista = lista.toString( ).split(',');

              forces to set 'lista' to an array

              --
              sm

              Comment

              • Conrad Lender

                #8
                Re: Elementos de un array

                On 2008-09-27 03:04, Jorge wrote:
                >var a = ['0', '1'];
                >a.blah = "ho hum";
                >a.push('2', '3');
                >for (var i in a) {
                > document.write( i + ": " + a[i] + "<br>");
                >>
                >}
                >
                Yes, but still sorts it well.
                For custom values of "well".
                It sorts "blah" between index 1 and 2 (FF2).
                This one instead... :-(
                >
                javascript:a=[0,,2];a[1]=undefined;for (i in a) { alert(i+':'+a[i]) };
                I don't get it. What does this display in your browser?
                All it does in FF2 is alert:

                0:0
                1:undefined
                2:2

                Which is what you would expect, I guess.


                - Conrad

                Comment

                • Jorge

                  #9
                  Re: Elementos de un array

                  On Sep 27, 3:55 am, Conrad Lender <crlen...@yahoo .comwrote:
                  On 2008-09-27 03:04, Jorge wrote:
                  >
                  var a = ['0', '1'];
                  a.blah = "ho hum";
                  a.push('2', '3');
                  for (var i in a) {
                      document.write( i + ": " + a[i] + "<br>");
                  >
                  }
                  >
                  Yes, but still sorts it well.
                  >
                  For custom values of "well".
                  It sorts "blah" between index 1 and 2 (FF2).
                  Ah, :-( then.
                  This one instead... :-(
                  >
                  javascript:a=[0,,2];a[1]=undefined;for (i in a) { alert(i+':'+a[i])};
                  >
                  I don't get it. What does this display in your browser?
                  All it does in FF2 is alert:
                  >
                    0:0
                    1:undefined
                    2:2
                  >
                  Which is what you would expect, I guess.
                  >
                  No, see, here a[1] === undefined as well, but it's not listed :

                  javascript:a= [0,,2];for (i in a) { alert(i+':'+a[i]) };

                  I was thinking that the for..in would help in transversing a sparse
                  array (an array with 'holes'), but that's not the case.

                  --
                  Jorge.

                  Comment

                  • dhtml

                    #10
                    Re: Elementos de un array

                    Jorge wrote:
                    On Sep 27, 3:55 am, Conrad Lender <crlen...@yahoo .comwrote:
                    >On 2008-09-27 03:04, Jorge wrote:
                    >>
                    >>>var a = ['0', '1'];
                    >>>a.blah = "ho hum";
                    >>>a.push('2' , '3');
                    >>>for (var i in a) {
                    >>> document.write( i + ": " + a[i] + "<br>");
                    >>>}
                    >>Yes, but still sorts it well.
                    >For custom values of "well".
                    >It sorts "blah" between index 1 and 2 (FF2).
                    >
                    Ah, :-( then.
                    >
                    >>This one instead... :-(
                    >>javascript: a=[0,,2];a[1]=undefined;for (i in a) { alert(i+':'+a[i]) };
                    >I don't get it. What does this display in your browser?
                    >All it does in FF2 is alert:
                    >>
                    > 0:0
                    > 1:undefined
                    > 2:2
                    >>
                    >Which is what you would expect, I guess.
                    >>
                    >
                    No, see, here a[1] === undefined as well, but it's not listed :
                    >
                    above, the value of the "1" property that exists is undefined.
                    javascript:a= [0,,2];for (i in a) { alert(i+':'+a[i]) };
                    >
                    No "1" property exists. When attepting to get the "1" property, it is
                    not found and so undefined is returned.

                    I was thinking that the for..in would help in transversing a sparse
                    array (an array with 'holes'), but that's not the case.
                    >
                    Which browser? FF 3.0?

                    javascript: alert(1 in [0,,2])

                    FF3.1
                    false

                    FF 3.0.1:
                    true

                    That was a bug that got fixed.
                    --
                    Jorge.

                    Comment

                    • Jorge

                      #11
                      Re: Elementos de un array

                      On Sep 29, 3:19 am, dhtml <dhtmlkitc...@g mail.comwrote:
                      Jorge wrote:
                      On Sep 27, 3:55 am, Conrad Lender <crlen...@yahoo .comwrote:
                      On 2008-09-27 03:04, Jorge wrote:
                      >
                      >>var a = ['0', '1'];
                      >>a.blah = "ho hum";
                      >>a.push('2', '3');
                      >>for (var i in a) {
                      >>    document.write( i + ": " + a[i] + "<br>");
                      >>}
                      >Yes, but still sorts it well.
                      For custom values of "well".
                      It sorts "blah" between index 1 and 2 (FF2).
                      >
                      Ah, :-( then.
                      >
                      >This one instead... :-(
                      >javascript:a =[0,,2];a[1]=undefined;for (i in a) { alert(i+':'+a[i]) };
                      I don't get it. What does this display in your browser?
                      All it does in FF2 is alert:
                      >
                        0:0
                        1:undefined
                        2:2
                      >
                      Which is what you would expect, I guess.
                      >
                      No, see, here a[1] === undefined as well, but it's not listed :
                      >
                      above, the value of the "1" property that exists is undefined.
                      >
                      javascript:a= [0,,2];for (i in a) { alert(i+':'+a[i]) };
                      >
                      No "1" property exists. When attepting to get the "1" property, it is
                      not found and so undefined is returned.
                      >
                      I was thinking that the for..in would help in transversing a sparse
                      array (an array with 'holes'), but that's not the case.
                      >
                      Which browser? FF 3.0?
                      >
                      javascript: alert(1 in [0,,2])
                      >
                      FF3.1
                         false
                      >
                      FF 3.0.1:
                         true
                      >
                      That was a bug that got fixed.
                      Hmmm, thanks.

                      --
                      Jorge.

                      Comment

                      Working...