2011-01-19 18 views
59

¿Cuál es el equivalente de Objective-C de la función JavaScript concat()?¿Cómo combinaría dos matrices en Objective-C?

Suponiendo que ambos objetos son matrices, ¿cómo los combinaría?

+0

Parece que estás haciendo operaciones calendáricas. Considere usar 'NSCalendar' y' NSDateComponents' y sus amigos para que lo hagan por usted. No son un tema trivial. ¿Estás teniendo en cuenta los meses bisiestos? ¿Qué tal el horario de verano? ¿Qué pasa con los segundos intercalares? etc. –

+0

@DaveDeLong - En este momento estoy portando una pequeña biblioteca de Javascript. Voy a estar refactorizando el código una vez que haya terminado con la reescritura real. Mi primer objetivo es obtener la información en Objective-C y optimizarla más adelante. – Moshe

Respuesta

192

NSArray 's arrayByAddingObjectsFromArray: es más o menos equivalente al método de JavaScript .concat():

NSArray *newArray=[firstArray arrayByAddingObjectsFromArray:secondArray]; 

Nota: Si firstArray es nula, newArray será nulo. Esto se puede solucionar mediante el uso de lo siguiente:

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

Si se quieren eliminar de salida duplicados:

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

¿Esto requeriría un 'firstArray' para ser un' NSMutableArray'? – Moshe

+2

no, es un método en NSArray – codelark

+4

@Moshe Devuelve un nuevo objeto NSArray (inmutable) y no altera la matriz original, por lo que funciona bien en objetos NSArray. – grahamparks

2

He aquí una & manera simple simétrica con sólo empezando con una matriz vacía:

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