ServiceNow从数组

时间:2017-03-23 01:54:06

标签: javascript-objects dynamic-arrays servicenow

我在ServiceNow工作,并且在涉及对象,数组以及如何访问元素时有一个业余编码问题。下面,我从一个空数组开始,并用对象填充它。现在我有一个包含对象的数组,我的问题是如何访问不同的元素?我希望能够生成一个表,其中列是数字,short_desc和url,并且行是动态生成的。我怎么能做到这一点?

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

4 个答案:

答案 0 :(得分:1)

所以,你有一个对象:data,并且该对象是一个元素:list。该元素是一个包含其他对象的数组。

正如JavaScript中的对象包含具有名称的属性一样,数组就像具有属性的对象,这些属性都具有顺序编号的名称。

例如,如果您有一个像var fruitz = ['apple', 'banana', 'hammer', 'pear'];这样的数组,它与一个看起来像这样的对象非常相似:

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

在任何一个示例中,您都可以使用值' banana'来访问该元素。用:fruitz[1];

当然,存在一些差异 - 包括这样的事实,当然,对象通常不具有连续数字名称的属性! - 这只是一个可视化如何访问数组元素的好方法。

JS 中的数组元素保留了它们的顺序,因此位置3中的元素(第四个元素 - 记住,数组使用"从零开始的索引")将保留在位置3.

您可以执行for循环迭代并从数组中获取元素,如下所示:

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

在线学习Angular有一些很好的资源,如果你想了解服务门户如何在前端工作,这绝对是至关重要的。

答案 1 :(得分:1)

另外,如果您想在 servicenow 中获取记录的 url,我建议使用 ka.getLink()。参考:getLink()

答案 2 :(得分:0)

以下是如何将数组作为平面表输出的示例。将其作为&#34;后台脚本&#34;运行,因为它使用&#34; gs.print&#34;输出结果。请注意,我必须添加第一行,只需设置&#34;数据&#34;脚本中的对象,但如果代码中已经存在,则不需要它。

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

答案 3 :(得分:0)

这是使用带有数组的obj来获取数据的方法:

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