2011-01-19 70 views
59

什麼是JavaScript concat()函數的Objective-C等價物?如何將Objective-C中的兩個數組合並在一起?

假設兩個對象都是數組,那麼如何將它們組合?

+0

看起來你正在做日曆操作。請考慮使用`NSCalendar`和`NSDateComponents`和朋友爲你做。他們不是一個小問題。你是否考慮過閏月?夏令時如何?閏秒呢?等等 – 2011-01-19 22:53:42

+0

@DaveDeLong - 現在我正在移植一個小的Javascript庫。一旦我完成了實際的重寫,我將重構代碼。我的第一個目標是獲取Objective-C中的信息並在稍後進行優化。 – Moshe 2011-01-19 22:55:31

回答

192

NSArrayarrayByAddingObjectsFromArray:是更多或更少相當於JavaScript的.concat()方法:

NSArray *newArray=[firstArray arrayByAddingObjectsFromArray:secondArray]; 

注意:如果firstArray是零,newArray將是零。這可以通過使用固定如下:

NSArray *newArray=firstArray?[firstArray arrayByAddingObjectsFromArray:secondArray]:[[NSArray alloc] initWithArray:secondArray]; 

如果你想帶出副本:

NSArray *uniqueEntries = (NSArray *)[[NSSet setWithArray:newArray] allObjects]; 
2

這裏是由只是一個空數組開頭的對稱&簡單的方法:

NSArray* newArray = @[]; 
newArray = [newArray arrayByAddingObjectsFromArray:firstArray]; 
newArray = [newArray arrayByAddingObjectsFromArray:secondArray];