JavaScript - Arbeiten mit Objekten: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
== Links ==
 +
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
 +
https://codeburst.io/javascript-quickie-dot-notation-vs-bracket-notation-333641c0f781
 +
 +
[[Klassen und Objekte in JavaScript]]
 +
 
== Objekte statt Arrays ==
 
== Objekte statt Arrays ==
  
Zeile 30: Zeile 36:
 
// or build or initialize the structure outright
 
// or build or initialize the structure outright
 
var obj = { fred: { apples: 1, oranges: 2 }, alice: { lemons: 1 } };
 
var obj = { fred: { apples: 1, oranges: 2 }, alice: { lemons: 1 } };
 +
</pre>
 +
 
If you're looking over values, you might have something that looks like this:
 
If you're looking over values, you might have something that looks like this:
 
+
<pre>
 
var people = ['fred', 'alice'];
 
var people = ['fred', 'alice'];
 
var fruit = ['apples', 'lemons'];
 
var fruit = ['apples', 'lemons'];
Zeile 49: Zeile 57:
  
 
</pre>
 
</pre>
 +
 +
== Schleifen mit Objekten ==
 +
Beispiel aus Stackoverflow:
 +
 +
<pre>
 +
{
 +
  "obj1" : {
 +
      "obj1.1" : "test",
 +
      "obj1.2" : {
 +
        "obj1.1.1" : true,
 +
        "obj1.1.2" : "test2",
 +
        "obj1.1.3" : {
 +
            ... // etc
 +
        }
 +
      }
 +
  }
 +
}
 +
</pre>
 +
<pre>
 +
function dig( blob, depth ) {
 +
  var depth = depth || 0; // start at level zero
 +
  for( var item in blob ) {
 +
    console.log( 'depth: ' + depth + ': ' + item); // do something real here
 +
    if( typeof blob[item] === 'object' ) {
 +
      dig( blob[item], ++depth ); // descend
 +
    } else { // simple value, leaf
 +
      console.log( ' => ' + blob[item] ); // do something real here
 +
    }
 +
  }
 +
}     
 +
 +
console.log( dig( obj ) );
 +
</pre>
 +
Assuming obj is your JSON as above, this should give you something like (not tested):
 +
<pre>
 +
depth: 0: obj1
 +
depth: 1: obj1.1
 +
=> test
 +
depth: 1: obj1.2
 +
// etc.
 +
</pre>
 +
 +
== JavaScript - Namespace ==
 +
Teste ob Objekt vorhanden, wenn nicht erstelle Objekt. Alle Funktionen und Eigenschaften sind in diesem Objekt definiert. Dadurch befinden wir uns in einme einheitlichen Namensraum.
 +
 +
// global namespace
 +
var MYAPP = MYAPP || {};

Aktuelle Version vom 1. März 2021, 16:58 Uhr

Links[Bearbeiten]

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript https://codeburst.io/javascript-quickie-dot-notation-vs-bracket-notation-333641c0f781

Klassen und Objekte in JavaScript

Objekte statt Arrays[Bearbeiten]

JavaScript Objekt und JavaScript Array[Bearbeiten]

Im Prinzip ist ein Array ein spezielles JavaScript Objekt. Da die Arbeit mit Arrays aber wesentlich unkomfortabler ist wie z.B. in PHP ist es oft besser statt einem Array ein Objekt zu nutzen. Gerade wenn man mit mehrdimensionalen Arrays arbeiten will stößt man mit JavaScript schnell an Grenzen.

Objekt statt mehrdimensionales Array[Bearbeiten]

Quelle: http://stackoverflow.com/questions/4329092/multi-dimensional-associative-arrays-in-javascript (Zugriff 07-2013)

I wish to store the data in a grid (maybe as an array) looping all the records like this:

         apple    orange   banana  melon
fred        2        4         7     -
mary        -        10        -     -
sarah       -        -         -     5
var obj = {};

obj['fred'] = {};
if('fred' in obj ){ } // can check for the presence of 'fred'
if(obj.fred) { } // also checks for presence of 'fred'
if(obj['fred']) { } // also checks for presence of 'fred'

// The following statements would all work
obj['fred']['apples'] = 1;
obj.fred.apples = 1;
obj['fred'].apples = 1;

// or build or initialize the structure outright
var obj = { fred: { apples: 1, oranges: 2 }, alice: { lemons: 1 } };

If you're looking over values, you might have something that looks like this:

var people = ['fred', 'alice'];
var fruit = ['apples', 'lemons'];

var grid = {};
for(var i = 0; i < people.length; i++){
    var name = people[i];
    if(name in grid == false){
        grid[name] = {}; // must initialize the sub-object, otherwise will get 'undefined' errors
    }

    for(var j = 0; j < fruit.length; j++){
        var fruitName = fruit[j];
        grid[name][fruitName] = 0;
    }
}

Schleifen mit Objekten[Bearbeiten]

Beispiel aus Stackoverflow:

{
  "obj1" : {
      "obj1.1" : "test",
      "obj1.2" : {
         "obj1.1.1" : true,
         "obj1.1.2" : "test2",
         "obj1.1.3" : {
             ... // etc
         }
      }
  }
}
function dig( blob, depth ) { 
  var depth = depth || 0; // start at level zero
  for( var item in blob ) {
    console.log( 'depth: ' + depth + ': ' + item); // do something real here
    if( typeof blob[item] === 'object' ) {
      dig( blob[item], ++depth ); // descend
    } else { // simple value, leaf
      console.log( ' => ' + blob[item] ); // do something real here
    }
  }
}      

console.log( dig( obj ) );

Assuming obj is your JSON as above, this should give you something like (not tested):

depth: 0: obj1
depth: 1: obj1.1
 => test
depth: 1: obj1.2
// etc.

JavaScript - Namespace[Bearbeiten]

Teste ob Objekt vorhanden, wenn nicht erstelle Objekt. Alle Funktionen und Eigenschaften sind in diesem Objekt definiert. Dadurch befinden wir uns in einme einheitlichen Namensraum.

// global namespace
var MYAPP = MYAPP || {};