Array speichern in dataVar ergibt Object

06.05.2020 14:19 (zuletzt bearbeitet: 06.05.2020 14:23)
avatar  Mike48
#1 Array speichern in dataVar ergibt Object
avatar
Mitglied

Hallo @Ingmar

Wenn ich ein Array in eine dataVar speichere kommt bein lesen immer ein Object zurück.

testArray = ["Wert1","Wert2","Wert3","Wert4"];
Speichern mit getDataVar.

Nach getDataVar habe ich aber ein Object statt Array
{"0":"Wert1","1":"Wert2","2":"Wert3","3":"Wert4"}

Ist das ein Bug?
Wie kann man erreichen dass nach dem getDataVar wieder ein Array vorhanden ist?

Edit:
Wenn ich das Array aber in ein Object setze dann bleibt es erhalten.
testArray = {
array: ["Wert1","Wert2","Wert3","Wert4"]
}

Dann habe ich nach getDataVar wieder ein Array, aber im Object
testArray .array // ["Wert1","Wert2","Wert3","Wert4"]


www.friends-of-xobor.de (621181 - V4 Template)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
06.05.2020 14:30
avatar  Ingmar
#2 RE: Array speichern in dataVar ergibt Object
avatar
Technik

Interessant. Da müsste ich selbst nachschauen, ob das ein Fehler oder so gewollt ist.

Unabhängig davon lässt sich das vermutlich schlecht ändern, da sonst ja alte Plugins ggf. nicht funktionieren.

Du kannst dir das recht einfach zwischen Object und Array umwandeln wie du es brauchst...

1
2
3
4
5
6
7
8
 

function toArray(_Object){
var _Array = new Array();
for(var name in _Object){
_Array[name] = _Object[name];
}
return _Array;
}
 



1
2
3
4
5
6
7
 
function toObject(_Array){
var _Object = new Object();
for(var key in _Array){
_Object[key] = _Array[key];
}
return _Object;
}
 



geklaut von hier: https://www.hiren.dev/2011/10/convert-ja...-object-to.html

Viele Grüße,
Ingmar


 Technik · Homepagemodules.de · Miranus GmbH

 Antworten

 Beitrag melden
06.05.2020 15:40 (zuletzt bearbeitet: 06.05.2020 15:46)
avatar  Mike48
#3 RE: Array speichern in dataVar ergibt Object
avatar
Mitglied

Ich werde es wahrscheinlich so machen, daß ich das Array vor dem Speichern in ein Objekt packe und beim Einlesen wieder aus dem Object hole.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
var array_1 = [];
var arrayobj = {
'array':[]
};
 
for(i=0; i<4; i++) {
array_1.push("Wert_"+i); // Array fuellen
}
 
arrayobj.array = array_1; // Array in Object packen und speichern
xobor.plugin('mike48test1a').setDataVar('userdata', 5, tuserID, arrayobj, function(res) {
console.log("Plugin Variablentest - array_1 gespeichert: " + res);
});
 
xobor.plugin('mike48test1a').getDataVar('userdata', 5, tuserID, function(res) {
array_1 = res.array; // Array aus Object holen
});
 
array_1.push("neuerEintrag1"); // mit Array Methode Eintrag einfuegen
 


So brauche ich nur bei setDataVar und getDataVar etwas Code ergänzen und kann die Array-Methoden wie gehabt verwenden.

Ich hatte bisher auch Schleifen benutzt um beim getDataVar wieder Arrays aus den Objecten zu machen.
Das ist aber umständlich und benötigt Zeit. Ich dachte, ich hätte mir das sparen können.
Es gab aber immer zusätzliche Problem wenn das Array mal leer war.

Die Lösung die jetzt gefunden habe löst das Problem auch und ist schneller.


www.friends-of-xobor.de (621181 - V4 Template)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!