programing

JSON 개체를 localStorage 어레이에 푸시

telecom 2023. 3. 26. 09:37
반응형

JSON 개체를 localStorage 어레이에 푸시

Javascript에는 다음과 같은 기능이 있습니다.

var a = [];
function SaveDataToLocalStorage(data)
{       
    var receiveddata = JSON.stringify(data);
    a.push(receiveddata);
    alert(a);

    localStorage.setItem('session', a);

}

data 파라미터는 JSON 객체입니다.

그러나 버튼을 클릭할 때마다 로컬 스토리지의 데이터가 덮어씁니다.

이거 할 줄 아는 사람 있어요?

이 정보를 localStorage에 올바르게 저장하려면 몇 가지 단계를 수행해야 합니다.단, 코드로 넘어가기 전에 localStorage(현시점)는 문자열 이외의 데이터 유형을 유지할 수 없습니다.스토리지용으로 어레이를 시리얼화한 후 다시 해석하여 변경해야 합니다.

순서 1:

다음 첫 번째 코드 조각은 localStorage에 시리얼화된 어레이를 아직 저장하지 않은 경우에만 실행해야 합니다.session변수.
localStorage가 올바르게 설정되어 어레이를 저장하려면 먼저 다음 코드 스니펫을 실행합니다.

var a = [];
a.push(JSON.parse(localStorage.getItem('session')));
localStorage.setItem('session', JSON.stringify(a));

위의 코드는 localStorage에 어레이를 아직 저장하지 않은 경우에만 한 만 실행해야 합니다.session변수.이미 이 작업을 하고 있는 경우는, 순서 2로 건너뜁니다.

순서 2:

다음과 같이 기능을 수정합니다.

function SaveDataToLocalStorage(data)
{
    var a = [];
    // Parse the serialized data back into an aray of objects
    a = JSON.parse(localStorage.getItem('session')) || [];
    // Push the new data (whether it be an object or anything else) onto the array
    a.push(data);
    // Alert the array value
    alert(a);  // Should be something like [Object array]
    // Re-serialize the array back into a string and store it in localStorage
    localStorage.setItem('session', JSON.stringify(a));
}

이게 나머진 알아서 처리해 줄 거야해석하면 오브젝트 배열이 됩니다.

현재 문자열 값은 localStorage에만 저장할 수 있습니다.어레이 개체를 직렬화한 다음 localStorage에 저장해야 합니다.

예를 들어 다음과 같습니다.

localStorage.setItem('session', a.join('|'));

또는

localStorage.setItem('session', JSON.stringify(a));

한 가지 제안할 수 있는 것은 스토리지 개체를 확장하여 개체 및 어레이를 처리하는 것입니다.

LocalStorage는 문자열만 처리할 수 있으므로 이러한 방법을 사용하여 처리할 수 있습니다.

Storage.prototype.setObj = function(key, obj) {
    return this.setItem(key, JSON.stringify(obj))
}
Storage.prototype.getObj = function(key) {
    return JSON.parse(this.getItem(key))
}

이를 사용하여 모든 값이 세트에서 json 문자열로 변환되고 get 시 구문 분석됩니다.

        let items = {
            name: name,
            size: size,
            price: price
        }

        let itemsList = []

        const getCarStorage = localStorage.getItem('productsList')
        if(getCarStorage){
            itemsList = JSON.parse(localStorage.getItem('productsList'))
            itemsList.push(items)
            localStorage.setItem('productsList', JSON.stringify(itemsList))
        }else{
            itemsList.push(items)
            localStorage.setItem('productsList', JSON.stringify(itemsList))
        }

Tengo un Objeto lamado 아이템 que cambia en funcion de lo que reciba por par ametros.Una variable items es unarray vacio를 나열합니다.

Si no tengo nada en local Storage, hago push del objeto dentro del array y lo seteo en local Storage.

Si ya tengo el array creado en el local Storage, me lo guardo en items List, hago push de mi objeto items y vuelvo setearlo.

Asi, si no tienes una matriz en local Storage, la creas, si la tienes hases push de lo nuevo.

var arr = [ 'a', 'b', 'c'];
arr.push('d'); // insert as last item

언급URL : https://stackoverflow.com/questions/16083919/push-json-objects-to-array-in-localstorage

반응형