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

我有一個條件,並基於此,我想在我的數組中推送香蕉值。將陣列值推到第一個索引

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();  
} 

它沒有做到這一點......當我在其他功能使用Config.Windows沒有banana價值......在所有

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

的'unshift'不支持IE,所以如果這是你的瀏覽器,它解釋了爲什麼它不工作 – 2011-06-15 13:10:07

+0

FYI:'用於each'是Mozilla的構造,它不會在任何其他瀏覽器。 – 2011-06-15 13:10:16

+0

IE中支持'unshift' * *,但不像其他瀏覽器那樣返回新數組的長度(感謝[Jon的評論](http://stackoverflow.com/a/13280099/141881)這個) – pospi 2013-04-25 23:33:18

回答

7

有許多方法,使你可以將值推到數組的前面。隨即,我能想到的方法有兩種:

  • 創建一個新的陣列,並更換舊的

    if (condition) { 
        Config.Windows = ['banana'].join(Config.Windows) 
        Config.Windows.reverse(); 
    } else { 
        Config.Windows.reverse(); 
    } 
    
  • 根據你所說的話,那就更有意義總是逆轉數組,然後把你的價值:

    //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'] 
    }