Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

291
Visualizações
Evitar que se cambie la matriz original

Tengo una matriz que consta de algunos datos geoJSON. Quiero crear una nueva matriz que consista en los datos con una clave más en la sección de propiedades. Pero sigue cambiando la matriz original. ¿Cómo puedo evitar que cambie la matriz original?

 const [citys, setCitys] = useState(someGeoJson) const [manipulatedArray, setManipulatedArray] = useState([]) function createManiArray() { let currentManipulatedArray = [] citys.features.forEach((city) => { let currentCity = city currentCity.properties = { ...city.properties, value: Math.random() } currentManipulatedArray .push(currentCity) //My problem now is that this changes the orginal city array, how can i prevent that from happening? }) setManipulatedArray(currentManipulatedArray) }
about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

Creo que muchos de este tipo de problemas surgen en el momento en que usas un forEach para asignar esencialmente valores a otra lista. El método "mapa" en una matriz hace exactamente eso

 const manipulated = citys.map(city => ({ ...city.properties, value: Math.random }));

De esta manera, no tiene que preocuparse por las referencias/modificar su matriz original.

PD: también vale la pena señalar que almacenar una variable con useState que se deriva esencialmente de otra variable de estado no es lo ideal. Es posible que desee reconsiderar cómo se gestiona su estado para tener esencialmente una única fuente de verdad (siendo su variable "ciudades") :)

about 4 years ago · Santiago Gelvez Relatório

0

  1. No está utilizando setManipulatedArray para establecer el estado.

  2. Debería usar el map para crear una nueva matriz de objetos en lugar de mutar la matriz original.

 const [cities, setCities] = useState(someGeoJson); const [manipulatedArray, setManipulatedArray] = useState([]); function createManiArray() { // Create a new array of objects with an updated // properties object const updated = cities.features.map(city => { return { ...city, properties: { ...city.properties, value: Math.random() } }; }); // Set the new state with that array setManipulatedArray(updated); }

about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda