2016-07-03 8 views
0

Ich habe ein Javascript-Objekt, das ich von einem Datenbankanruf erstelle. Es wird mehrere Elemente haben und ich muss in der Lage sein, auf einen bestimmten Schlüssel/Wert (moduleID) zu verweisen.Suchen von Daten in Javascript Objekt

success: function(data) { 

     // Define our local vars 
     var moduleIncludes = Array(); 

     // Loop over each of the users selected modules and put them into an array 
     $(data).find('modules').each(function() { 

      // Push module JS file names to an array 
      moduleIncludes.push($(this).find('moduleJSFile').text()); 

      // Create an object of module data 
      moduleData.push({ 
       moduleID: $(this).find('moduleID').text(), 
       moduleRow: $(this).find('row').text(), 
       moduleColumn: $(this).find('col').text(), 
       moduleName: $(this).find('moduleName').text(), 
       moduleDescription: $(this).find('moduleDescription').text(), 
       moduleJSFile: $(this).find('moduleJSFile').text(), 
       moduleIcon: $(this).find('moduleIcon').text(), 
       moduleStartingXsize: $(this).find('startingXsize').text(), 
       moduleStartingYsize: $(this).find('startingYsize').text(), 
       moduleResizeLocked: $(this).find('resizeLocked').text(), 
       moduleMinXsize: $(this).find('minXsize').text(), 
       moduleMinYsize: $(this).find('minYsize').text() 
      }); 
     }); 

     // Using our array of modules, fetch them to include them into the page 
     $.getMultiScripts(moduleIncludes, 'includes/js/modules/').done(function() { 
      // All of the modules have been included. Trigger the grid functionality. 
      renderCanvas(); 
     }); 
    } 
}); 

Statt über jeden zu Schleife zu finden, was ich suche, ist es eine Möglichkeit, das Objekt durch die moduleID stattdessen seit seiner einzigartigen benennen?

Zum Beispiel, wenn ich alle Daten zu ModulId 1 sehen möchte, würde ich gerne in der Lage sein, das Objekt nur nach ID zu suchen, anstatt es zu loopen, um es zu finden.

Kann ich dies in meiner Kreation erreichen?

enter image description here

+0

Können Sie ein Beispiel für das Format "Daten" zeigen? Wenn Sie ein Array haben, müssen Sie es durchlaufen (oder '.find()' oder '.filter()'), aber wenn Sie ein Objekt haben, dann können Sie auf Eigenschaften nach Schlüsselnamen verweisen. – nnnnnn

+0

Daten sind eine XML-Zeichenfolge, die von einer gespeicherten Prozedur übergeben wird. Die Objekte werden gut erstellt, wie Sie im Bild sehen können, aber ich muss sie irgendwie nach ID definieren. – SBB

Antwort

1

vielleicht, was Sie brauchen, ist mehr wie:

moduleIncludes = {}; 
moduleIncludes[Id] = {"moduleRow":$(this).find('row').text() ...}; 

wie dies zu tun, werden Sie in der Lage sein, direkt von ID ein bestimmtes Modul zu beantragen.

+0

Das ist, was ich brauchte. Jetzt kann ich modulIncludes [1] .moduleRow sagen – SBB

0

Sie können filter() Funktion für die Suche nach Objekt verwenden.

Dokument in w3schools.

Beispiel: Filter nach Objekt-ID

function matchId(id) { 
    return moduleData.moduleID == id; 
} 

data = moduleData.filter(matchId); 

Es ist einfacher als Sie eine Schleife mit for oder foreach schreiben.

Goodluck und viel Spaß!