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

177
Vistas
remove object from array using an id before saving it in local storage in react native

I am saving few data as an object in array in my local storage using AsyncStorage, I am able to do it in following way:

const [saveData, setSaveData] = useState([]);

useEffect(() => {
  AsyncStorage.setItem('test4', JSON.stringify(saveData))
    .then(json => console.log('success!'))
    .catch(error => console.log('error!'));
}, [saveData]);


const _submitWithWeather = async text => {
  let date = new Date();
  const curDate = moment(date).format('MMM DD');
  let newItem;

  newItem = {
    id: curDate,
    date: curDate,
    description: text,
    imageURL: photo,
    location: getLocation,
    temperature: getWeather,
    weatherType: geType,
  };

  setSaveData(prevList => {
    prevList = prevList || [];
    if (prevList.length < 0) {
      return newItem;
    } else {
      return [...prevList, newItem];
    }
  });
};

<TouchableOpacity
  onPress={() => {
    _submitWithWeather(text);
  }}>
  <Text>save</Text>
</TouchableOpacity>

I am passing today's date as an id, because if the date on which I am saving my data, matches an object with same date then it should replace the object from array whose date is also today's data.

for example:

[
  {
    "date": "Jan 02", 
    "description": "1", 
    "id": "Jan 02", 
    "imageURL": "urlImage.jpg", 
    "location": "location", 
    "temperature": "13°C", 
    "weatherType": "Clear"
  }
]

today's date is jan 02, and if I change the description or image and then click save , then this new object should replace the older object whose date is also jan 02

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

You can achieve this by using Array.filter to filter out based on your Id prop and spread operator to bring it back together.

const d1 = [
{
    date: 'Jan 01',
    description: '1',
  },
  {
    date: 'Jan 02',
    description: '2',
  },
];

const d2 = {
  date: 'Jan 01',
  description: 'abc',
};

  const getData = () => {
    const d1WithoutDateToUpdate = d1.filter((d) => d.date != d2.date);
    const updatedD1 = [...d1WithoutDateToUpdate, d2];

    return updatedD1;
  };
about 4 years ago · Juan Pablo Isaza Denunciar

0

You could do a simple Array#map to update the data.

  setSaveData(prevList => {
    if (prevList.length) {
        return prevList.map(obj => (newItem.date === obj.date) ? newItem : obj);
    }
    return [newItem]
  });

As you've already initialized the value you don't need to set prevList = prevList || []

about 4 years ago · Juan Pablo Isaza 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