如何使用JavaScript在BIRT上对ip地址进行排序

How can I sort ip addresses on BIRT with JavaScript?

本文关键字:地址 排序 ip 上对 何使用 JavaScript BIRT      更新时间:2023-09-26

我是BIRT的新手,不是javascript专业人士。我正在使用birt通过从数据库中获取一些信息来创建一些报告。我在列上有作为字符串的ip地址。BIRT为表提供了一个排序部分,我有这个表达式;

if(params["sorting"].value=="startdate")
dataSetRow["r_date_0"]
else if(params["sorting"].value=="enddate")
dataSetRow["r_date_1"]
else if(params["sorting"].value=="ipaddress")
dataSetRow["r_vchar_2"]
else
dataSetRow["r_vchar_3"]

这非常适用于startdate和enddate,但当涉及到ipad时,它会将它们作为字符串进行比较,所以在排序的报告中,我看到"2"比"199"大。

我可以用"分隔ip地址并将它们解析为整数,然后比较我使用的是python还是java,但我不确定如何在BIRT环境中使用javascript。

任何关于如何修改我的表达以满足我的需求的想法都将受到赞赏。

在数据集中使用计算列,在该列中,您可以将ip地址转换为可以排序的形式,例如

var addrArray = dataSetRow["r_vchar_2"].split(".");
var num = 0;
for (var i=0;i<addrArray.length;i++) {
  var power = 3-i;
  num += ((parseInt(addrArray[i])%256 * Math.pow(256,power)));
}
num;

您可以使用此字段进行排序,而原始字段用于显示ip地址