2017-03-23 73 views
1

私はServiceNowで作業しており、オブジェクト、配列、および要素へのアクセス方法についてはアマチュアコーディングの質問があります。以下では、空の配列からオブジェクトを作成します。オブジェクトが配列されたので、どうやってさまざまな要素にアクセスできますか?私は、列がnumber、short_desc、およびurlであり、行が動的に生成されるテーブルを生成できるようにしたい。どのように私はこれを達成することができますか?ServiceNowは配列からオブジェクトを取得します

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') 
      }); 
} 

答えて

1

だから、あなたが持っているオブジェクト:dataを、そのオブジェクトの要素である:list。その要素は、他のオブジェクトを含む配列です。

JavaScriptのオブジェクトに名前のあるプロパティが含まれているのと同じように、配列はすべてプロパティ名のついたオブジェクトに似ています。例えば

あなたはvar fruitz = ['apple', 'banana', 'hammer', 'pear'];のような配列を持っている場合、それはこのようになりますオブジェクト持つと非常によく似ています:いずれかの例では

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

を、あなたが「バナナ」の値を持つ要素にアクセスすることができます:fruitz[1];

もちろん、いくつかの違いがあります。もちろん、オブジェクトには通常、連続する数値名のプロパティはありません。これは、配列要素へのアクセス方法を視覚化するための良い方法です。

JS

配列要素がそう3位の要素(第4要素 - アレイが「ゼロベースのインデックス」を使用し、覚えている)、その順序をを保持しないあなたは位置3

にとどまることができそのような配列の要素を反復処理し、取得するためのループを実行します。

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

いくつかの素晴らしいリソースは、あなたがどのようにサービスポータルの作品を理解するために探しているなら、間違いなく重要である、角度の学習のため来店中ですフロントエンドで

0

次に、配列をフラットテーブルとして出力する方法の例を示します。結果を出力するために "gs.print"を使用するため、これを "バックグラウンドスクリプト"として実行します。最初の行を追加しなければならないことに注意してください。スクリプト内に "data"オブジェクトを設定するだけですが、コード内にすでに存在する場合は必要ありません。

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

これは質問に答えますが、同じ出力が配列を必要とせずにWhileループから直接生成されている可能性があります。私はあなたがそれ以上のテーブルのために配列を必要とすると仮定します。その答えはあなたの質問の要件を満たします。 –

関連する問題