我在工作的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')
});
}
所以,你有一个目标:data
,并在该对象是一个元素:list
。该元素是一个数组,其中包含其他对象。
正如在JavaScript对象包含具有名字的属性,数组就像与所有有顺序编号,名称属性的对象。
举例来说,如果你有一个像var fruitz = ['apple', 'banana', 'hammer', 'pear'];
一个数组,它非常类似于具有对象,看起来像这样:
var fruitz = {
0:'apple',
1:'banana',
3:'hammer',
4:'pear'
};
在两个例子中,你可以接入与价值“香蕉”的元素: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.');
}
有网上学习角,如果你正在寻找了解服务门户如何作用于前端是绝对关键的一些重要的资源。
下面是如何以输出阵列作为平坦表的一个例子。运行此为“背景脚本”,因为它使用“gs.print”输出结果。请注意,我不得不添加的第一行刚刚成立在脚本中的“数据”对象,但你并不需要,如果它已经在你的代码存在。
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);
}
这是如何使用的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);
}