Esta es una función que agrega datos y los almacena en el almacenamiento local. ¿Cómo evito que almacene datos duplicados?
const WishlistHandler = (video, id) => { console.log({ video }) console.log({ id }) let mylist = ls('list') let itemGet; let a = video if (mylist !== null) { itemGet = ls.get('list') if (!itemGet.includes(video)) { itemGet.push(video) ls.set('list', itemGet) SetWishList(itemGet) } } else { console.log("not same") ls.set('list', [video]) } }
Dependiendo del tipo de elemento de su matriz, puede hacer esto de varias maneras:
const data = [1,2,3,4,5,6,7,8,9,10] const addDataIfNotPresent = (arr,val) => arr.includes(val) ? arr : [...arr, val] console.log(addDataIfNotPresent(data,5)) console.log(addDataIfNotPresent(data,0)) console.log(addDataIfNotPresent(data,1)) console.log(addDataIfNotPresent(data,2)) console.log(addDataIfNotPresent(data,11)) console.log(addDataIfNotPresent(data,-1))
const data = [ {id: 1, value: '1'}, {id: 2, value: '2'}, {id: 3, value: '3'}, {id: 4, value: '4'}, {id: 5, value: '5'}, {id: 6, value: '6'}, {id: 7, value: '7'}, {id: 8, value: '8'}, ] const addDataIfNotPresent = (arr, obj) => arr.find(el => el.id === obj.id) ? arr : [...arr, obj] console.log(addDataIfNotPresent(data, {id: 2, value: '2'})) console.log(addDataIfNotPresent(data, {id: 3, value: '3'})) console.log(addDataIfNotPresent(data, {id: 4, value: '4'})) console.log(addDataIfNotPresent(data, {id: 10, value: '10'})) console.log(addDataIfNotPresent(data, {id: 11, value: '11'}))
Dependerá de lo que hace que su entrada sea única, digamos que tiene objetos {'1': "panda.mp4", '2': "monkey.mp4"} y desea asegurarse de que agregar ('panda.mp4 ', '1'). no funcionará, este código puede ayudarte.
En este caso, considero el id como el elemento que hace que la entrada sea única. En base a esto, puede personalizar y hacer que funcione según sus necesidades.
const WishlistHandler = (video, id) => { let mylist = JSON.parse(localStorage.getItem('list')) if (mylist !== null) { if (!Object.keys(mylist).includes(id)) { localStorage.setItem('list', JSON.stringify({...mylist, [id]: video})) } } else { localStorage.setItem('list', JSON.stringify({[id]: video})) } }