Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

154
Vistas
Iterar a través de la matriz Swift y cambiar valores

Necesito cambiar los valores de una matriz Swift. Mi primer intento fue simplemente iterar, pero esto no funciona ya que solo obtengo una copia de cada elemento y los cambios no afectan la matriz de origen. El objetivo es tener un "índice" único en cada elemento de la matriz.

 myArray = [["index": 0], ["index":0], ["index":0], ["index":0]] counter = 0 for item in myArray { item["index"] = counter counter += 1 }

Mi siguiente intento fue usar el mapa, pero no sé cómo establecer un valor creciente. Podría establecer $0["index"] = 1 pero necesito un valor creciente. ¿De qué manera sería esto posible usando el mapa?

 myArray.map( { $0["index"] = ...? } )

¡Gracias por cualquier ayuda!

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

El contador en un bucle for es una constante. Para hacerlo mutable, podrías usar:

 for var item in myArray { ... }

Pero eso no será útil aquí ya que estaríamos mutando el item y no los elementos en myArray .

Podrías mutar los elementos en myArray de esta manera:

 var myArray = [["index": 0], ["index":0], ["index":0], ["index":0]] var counter = 0 for i in myArray.indices { myArray[i]["index"] = counter counter += 1 } print(myArray) //[["index": 0], ["index": 1], ["index": 2], ["index": 3]]

La variable de counter no es necesaria aquí:

 for i in myArray.indices { myArray[i]["index"] = i }

Una forma funcional de escribir lo anterior sería:

 myArray.indices.forEach { myArray[$0]["index"] = $0 }
over 4 years ago · Santiago Trujillo Denunciar

0

Encontré una manera simple y me gustaría compartirla.

La clave es la definición de myArray . Tendría éxito si es de esta manera:

 let myArray : [NSMutableDictionary] = [["firstDict":1, "otherKey":1], ["secondDict":2, "otherKey":1], ["lastDict":2, "otherKey":1]] myArray.enumerated().forEach{$0.element["index"] = $0.offset} print(myArray) [{ firstDict = 1; index = 0; otherKey = 1; }, { index = 1; otherKey = 1; secondDict = 2; }, { index = 2; lastDict = 2; otherKey = 1; }]
over 4 years ago · Santiago Trujillo Denunciar

0

¿Qué tal un enfoque más funcional mediante la creación de una nueva matriz para almacenar los diccionarios modificados?

 let myArray = [["index": 0], ["index":0], ["index":0], ["index":0]] let myNewArray = myArray.enumerated().map { index, _ in ["index": index] }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda