Frage

Ich versuche, ein zweidimensionales Array in eine Zeichenfolge zu konvertieren, um sie in dem localstorage-Array zu speichern. Allerdings ist es etwas falsch mit diesem Code, den ich nicht identifizieren kann:

for(x in array) {
    if(array[x] instanceof Array) {
        array[x] = array[x].join("`");
    }
}
var string = array.join("@");
localStorage[key] = string;

Hat jemand eine Idee, was ich falsch mache?

Wie für das, was falsch ist, durch mehrdimensionales Array meine ich array [0] [1] usw. Wenn der Eingang in localstorage, alle ‚string‘ reduziert wird, ist @, auf der anderen Seite des @ was impliziert, gibt es immer noch Arrays.

War es hilfreich?

Lösung

Was ist das etwas, was falsch ist? sicher, uCan Sie sagen, was Ihre Eingabe ist, was Sie erwartet, und was die unerwünschte Ausgang ist?

Zumindest, wenn array ist in der Tat ein Array ist, sollten Sie keine for..in loop verwenden. Das ist für Objekte. Verwenden Sie einfach ein

for (var i=0, l=array.length; i<l; i++){
    if (array[i] instanceof Array){
        array[i] = array[i].join("`");
    }
}

Andere Tipps

Heute ist dies so einfach wie:

[[1,2],[3,4]].map(e => e.join(':')).join(';'); // 1:2;3:4

JSON ist Standard in modernen Browser. Sie können es verwenden, um "stringify" (Umwandlung in einen JSON-String) und "analysieren" convert aus einer JSON-String.

Sie können die JSON.stringify Funktion benutzen, um Ihre 2D-Array zu JSON konvertieren und es in localStorage bleiben. Dann können Sie JSON.parse verwenden, um es in ein Array zu umwandeln zurück.

var my2DArray = [[1, 2, 3], [4, 5, 6]];
var stringified = JSON.stringify(my2DArray);
localStorage[key] = stringified;

var backToOriginal = JSON.parse(localStorage[key]);

Javascript muss nicht zweidimensionalen Arrays. Es hat nur zerlumpten Arrays. Der Code funktioniert bei mir für einen entsprechenden Eingang:

array = [[1,2],[3,4]];
for(x in array) {
    if(array[x] instanceof Array) {
        array[x] = array[x].join("`");
    }
}
var string = array.join("@");
alert(string);

Ausgabe:

1`2@3`4

Könnten Sie uns zeigen, was Eingang Sie verwenden und welche Ausgabe Sie erhalten?

Der Code scheint gut für mich zu arbeiten, in Firefox testen.

Ist es in einem bestimmten Browser versagt?

var array = [
["a","b"],
["c","d","e"]];
for(x in array) {
    if(array[x] instanceof Array) {
        array[x] = array[x].join("`");
    }
}
var string = array.join("@");
console.log(string);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top