peterS.: objekt-literale als "jsDatenbanken"

Beitrag lesen

gruss TS,

fuer den grossteil der javascript-objekte wie z.b.
Object, Array, RegExp, String, Number und Boolean
ist es moeglich, bei der objekt-definition sowohl
den objekt-konstruktor als auch das entsprechende
objekt-literal heranzuziehen - bsp.:

var x = new Object(); // bzw.: var x = {};
var x = new Array();  // bzw.: var x = [];
var regX = /\s+/g;    // bzw.: var regX = new RegExp("\s","g");
var x = "12345";      // bzw.: var x = new String(12345);
...
...

Dein beispiel schreit geradezu nach verwendung von literal-notationen:

var bookmarks =  { /* schreibweise: Object-literal - als "*.js"-file speichern */

"Beschreibung_1" : {

url : "http://www.URL_1.de",
    par : "Parameter_1"
  },

"Beschreibung_2" : {

url : "http://www.URL_2.de",
    par : "Parameter_2"
  },

/*
    ...
  */

"Beschreibung_N" : {

url:"http://www.URL_N.de",
    par:"Parameter_N"
  }

};

// auszulesen ueber:

function readStructure() {

var description, locator, parameter;

for (description in bookmarks) {

locator = bookmarks[description].url;
    parameter = bookmarks[description].par;
    /*
      hier mit den daten arbeiten;
    */
  }
}

// vorteil  : bleiben die namen der schluessel erhalten,
//            kann die struktur nachtraeglich ohne
//            komplikationen geaendert werden;
//
// nachteil : die schreibweise eines reinen Array-literals
//            ist noch kuerzer als die eben im beispiel
//            verwendete eines Object-literals;

oder

var bookmarks = [ /* schreibweise Array-literal - als "*.js"-file speichern */

["http://www.URL_1.de","Beschreibung_1","Parameter_1"],
  ["http://www.URL_2.de","Beschreibung_2","Parameter_2"],

/*
    ...
  */

["http://www.URL_N.de","Beschreibung_N","Parameter_N"]

];

// auszulesen ueber:

function readStructure() {

var i, loc, des, par;

for (i=0; i<bookmarks.length; i++) {

loc = bookmarks[i][0];
    des = bookmarks[i][1];
    par = bookmarks[i][2];
    /*
      hier mit den daten arbeiten;
    */
  }
}

// vorteil  : ultrakurze schreibweise einer js-array-struktur;
//
// nachteil : aenderungen innerhalb der datenstruktur ziehen
//            immer eine aenderung des diese strukur lesenden
//            prozesses nach sich (in diesem bsp. ist der
//            aufwand zum umschreiben vernachlaessigbar);

Es kommt dabei stark auf die Ladezeiten an. Also soll die Datenmenge möglichst klein sein.
Ich dachte mir deshalb eine Struktur in der externen Datei à la:

|http://www.URL_1.de/|Beschreibung_1|Parameter_1|
|http://www.URL_2.de/|Beschreibung_2|Parameter_2|
.
.
.
|http://www.URL_n.de/|Beschreibung_n|Parameter_n|

nimm die zuletzt vorgeschlagene variante zur loesung Deines problems:

// "bookmarks.js"
var bookmarks = [
["http://www.URL_1.de","Beschreibung_1","Parameter_1"],
["http://www.URL_2.de","Beschreibung_2","Parameter_2"],
/*
  ...
*/
["http://www.URL_N.de","Beschreibung_N","Parameter_N"]];

die beiden tests, die ich mit jeweils 1000 dieser zeilen

var bookmarks = [
["http://www.URL_1-URL_1-URL_1-URL_1.de","Beschreibung_1,Beschreibung_1,Beschreibung_1,Beschreibung_1","Parameter_1"],
/* 998 weitere */
["http://www.URL_1-URL_1-URL_1-URL_1.de","Beschreibung_1,Beschreibung_1,Beschreibung_1,Beschreibung_1","Parameter_1"]];

bzw.

var bookmarks = {
"Beschreibung_1,Beschreibung_1,Beschreibung_1,Beschreibung_1":{url:"http://www.URL_1-URL_1-URL_1-URL_1.de",par:"Parameter_1"},
/* 998 weitere */
"Beschreibung_1,Beschreibung_1,Beschreibung_1,Beschreibung_1":{url:"http://www.URL_1-URL_1-URL_1-URL_1.de",par:"Parameter_1"}];

durchfuehrte, kommen auf 117.21 kByte fuer die Array-notation bzw. auf 125.02 kByte fuer die Object-notation;

viel erfolg und by(t)e by(t)e - peterS. - pseliger@gmx.net

--
sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)