2017-03-23 8 views
1

Ich arbeite in ServiceNow und habe eine Amateur-Codierung Frage, wenn es um Objekte, Arrays geht, und wie Sie auf die Elemente zugreifen. Unten beginne ich mit einem leeren Array und bevölke es mit Objekten. Nun, da ich ein Array mit Objekten in ihnen habe, ist meine Frage, wie kann ich auf die verschiedenen Elemente zugreifen? Ich möchte in der Lage sein, eine Tabelle zu generieren, in der die Spalten nummer, short_desc und url sind und die Zeilen dynamisch erzeugt werden. Wie kann ich das erreichen?ServiceNow Abrufen von Objekten aus Array

data.list = []; 
var ka = new GlideRecord('x_81991_knowledge'); 
    ka.addQuery('kb_category.label', 'Benefits'); 
    ka.query(); 
     while(ka.next()) { 
      data.list.push({ 
       number: ka.getValue('number'), 
       short_desc: ka.getValue('short_description'), 
       url:'kb_view.do?sysparm_article=' + ka.getValue('number') 
      }); 
} 

Antwort

1

So haben Sie ein Objekt bekommen: data, und in diesem Objekt ist ein Element: list. Dieses Element ist ein Array, das andere Objekte enthält.

So wie Objekte in JavaScript Eigenschaften mit Namen enthalten, sind Arrays genau wie Objekte mit Eigenschaften, die alle fortlaufend nummerierte Namen haben.

Zum Beispiel, wenn Sie ein Array wie var fruitz = ['apple', 'banana', 'hammer', 'pear']; haben, ist es sehr ähnlich, ein Objekt zu haben, die wie folgt aussieht:

var fruitz = { 
    0:'apple', 
    1:'banana', 
    3:'hammer', 
    4:'pear' 
}; 

In jedem Beispiel können Sie das Element zugreifen mit dem Wert ‚Banane‘ mit : fruitz[1];.

Es gibt natürlich einige Unterschiede - einschließlich der Tatsache, dass Objekte normalerweise keine Eigenschaften mit sequentiellen numerischen Namen haben! - Dies ist nur ein guter Weg, um zu visualisieren, wie man auf Array-Elemente zugreifen würde.

Array-Elemente in JS Sie behalten ihre Ordnung, so ein Element in Position 3 (das vierte Element - denken Sie daran, Arrays verwenden, um eine "Null-basierten Index") wird an der Position bleiben 3.

Sie könnten tun, um eine for-Schleife über iterieren und Elemente aus dem Array erhalten wie folgt:

var i; 
for (i = 0; i < fruitz.length; i++) { 
    gs.info(fruitz[i] + ' is element number ' + i + ' in the array.'); 
} 

Es gibt einige große Online-Ressourcen für das Lernen Angular, die auf jeden Fall kritisch ist, wenn Sie schauen, wie die Service-Portal Werke verstehen auf der Vorderseite.

0

Hier ist ein Beispiel, wie das Array als flache Tabelle ausgegeben wird. Führen Sie dies als "Hintergrundskript" aus, da es "gs.print" verwendet, um die Ergebnisse auszugeben. Beachten Sie, dass ich die erste Zeile hinzufügen musste, um das Objekt "data" im Skript einzurichten, aber das wäre nicht nötig, wenn es bereits in Ihrem Code vorhanden ist.

var data = {} 

data.list = []; 
var ka = new GlideRecord('x_81991_knowledge'); 
    ka.addQuery('kb_category.label', 'Benefits'); 
    ka.query(); 
     while(ka.next()) { 
      data.list.push({ 
       number: ka.getValue('number'), 
       short_desc: ka.getValue('short_description'), 
       url:'kb_view.do?sysparm_article=' + ka.getValue('number') 
      }); 
} 

for(var i=0; i < data.list.length; i++){ 
    gs.print("Number: " + data.list[i].number + ", Short Description: " + data.list[i].short_desc + ", URL: " + data.list[i].url); 
} 
+0

Obwohl dies die Frage beantwortet, könnte die gleiche Ausgabe direkt aus der While-Schleife generiert werden, ohne dass das Array benötigt wird. Ich nehme an, dass Sie das Array für mehr als nur die Tabelle benötigten, also erfüllt die Antwort die Anforderungen Ihrer Frage. –

Verwandte Themen