2011-06-15 13 views
7
var Config = { 
    Windows: ['apple','mangi','lemon'] 
} 

Tengo una condición y, en base a eso, quiero presionar el valor banana en mi matriz.Empujar el valor de la matriz al primer índice

If(Condition Passed) { 
     Config.Windows.unshift('banana'); 
     Windows: ['banana','apple','mangi','lemon'] 
     Config.Windows.reverse(); 
     // The way the Array elements are now reversed and First banana is accessed. 
    } else { 
     Config.Windows.reverse();  
} 

No hacerlo ... Cuando uso el Config.Windows en mi otra función que no hay banana ... Valor del todo

for each(var item in Config.Windows.reverse()) { 
Ti.API.info(item); 
//This does not print banana 
+1

El' unshift' no es compatible con IE así que si ese es el navegador que explica por qué no está funcionando –

+0

FYI:. 'Para each' es una cuenta de Mozilla construirla no funcionará en cualquier otro navegador. . –

+0

'unshift' * es * compatible con IE, pero no devuelve la longitud de la nueva matriz a diferencia de otros navegadores (gracias a [comentario de Jon] (http://stackoverflow.com/a/13280099/141881) para señalar esto afuera) – pospi

Respuesta

7

Hay muchas maneras en que usted puede empujar el valor al frente de la matriz. Inmediatamente, se me ocurre de dos maneras:

  • crear un nuevo array, y reemplazar la antigua

    if (condition) { 
        Config.Windows = ['banana'].join(Config.Windows) 
        Config.Windows.reverse(); 
    } else { 
        Config.Windows.reverse(); 
    } 
    
  • Sobre la base de lo que ha dicho, sería más lógico realice siempre la matriz, y luego empujar a su valor:

    //initial array: ['apple','mangi','lemon'] 
    
    Config.Windows.reverse(); //['lemon','mangi','apple'] 
    if (condition) { 
        //this will get the same result as your code 
        Config.Windows.push("banana"); //['lemon','mangi','apple', 'banana'] 
    } 
    
Cuestiones relacionadas