Ich möchte vom Server zurückgegebene Datenobjekte hinzufügen und im lokalen Speicher speichern.

data.Total ist eine Reihe von Ganzzahlen, die bei erfolgreichen Anforderungen vom Server kommen. Ich muss sie irgendwie hinzufügen, bevor ich sie im lokalen Speicher speichern kann

let score = data.Total+localStorage.getItem("RelationScore");
let removeNull = score.replace('null', '');
localStorage.setItem("RelationScore", removeNull );

Beispielausgabe: 1234

Ich möchte diese hinzufügen und in einer einzelnen Variablen speichern, daher sollte das auf dem Beispiel basierende Ergebnis 10 sein.

-1
Gragas Incoming 18 Apr. 2018 im 19:55

3 Antworten

Beste Antwort

Alle Elemente werden als Zeichenfolge in localStorage gespeichert. Sie müssen sie also zuerst analysieren:

let score = localStorage.getItem("RelationScore");
score = score === null ? 0 : parseInt(score);
localStorage.setItem("RelationScore", data.Total + score);

Ich gehe davon aus, dass data.Total eine ganze Zahl ist, wie Sie gesagt haben. Wenn dies nicht der Fall ist, müssen Sie es auch analysieren.

Wenn Sie die Gesamtsumme nur aktualisieren möchten, wenn der Artikel nicht Null ist:

let score = localStorage.getItem("RelationScore");
if(score !== null) {
    score = parseInt(score);
    if(score !==0)
        localStorage.setItem("RelationScore", data.Total + score);
}
1
Racil Hilan 18 Apr. 2018 im 17:22

Selbst wenn Sie eine Ganzzahl in localStorage einfügen, wird diese als Zeichenfolge gespeichert.

Wenn Sie einer Zeichenfolge in JavaScript eine Nummer hinzufügen, hängen Sie die Nummer nur an die Zeichenfolge "10" + 1234 === "101234"; an. Sie müssen den String also auf eine Zahl analysieren:

let score = 0;

if (localStorage.getItem("RelationScore")) { // if the Item exists 
  score += parseInt(localStorage.getItem("RelationScore")); // make a number out of it and add it to the score
}

score += parseInt(data.Total); // add data.Total, even if the Item hasn't already been set

localStorage.setItem("RelationScore", score); // finally save the score to localStorage
0
Luca Kiebel 18 Apr. 2018 im 17:19

Aufgrund Ihrer Kommentare suchen Sie wahrscheinlich nach diesem Code:

let stored = (localStorage.getItem("RelationScore") === null ? 0 : parseInt(localStorage.getItem("RelationScore")));
let score = parseInt(data.Total) + stored;
localStorage.setItem("RelationScore", score);
1
Sébastien S. 18 Apr. 2018 im 17:05