Sorting 使用交叉过滤器对ip地址字段进行排序
我想知道是否有任何方法可以使用交叉过滤器对ipaddress进行排序 例如: 我有一个ip阵列:Sorting 使用交叉过滤器对ip地址字段进行排序,sorting,ip-address,crossfilter,Sorting,Ip Address,Crossfilter,我想知道是否有任何方法可以使用交叉过滤器对ipaddress进行排序 例如: 我有一个ip阵列: [{ ip: "10.102.126.1"},{ ip: "10.102.126.2"},{ ip: "10.102.126.3"},{ ip: "10.102.126.4"},{ ip: "10.102.126.5"},{ ip: "10.102.126.6"},{ ip: "10.22.126.1"},{ ip: "20.102.126.1"},{ ip: "20.22.126.1"},{
[{ ip: "10.102.126.1"},{ ip: "10.102.126.2"},{ ip: "10.102.126.3"},{ ip: "10.102.126.4"},{ ip: "10.102.126.5"},{ ip: "10.102.126.6"},{ ip: "10.22.126.1"},{ ip: "20.102.126.1"},{ ip: "20.22.126.1"},{ ip: "100.22.126.1"},{ ip: "200.22.126.1"}]
当我应用crossfilter并使用以下命令获得
dimension.top(无限大)
它对字符串进行排序并返回
输出:200.22.126.1、20.22.126.1、20.102.126.1、100.22.126.1、10.22.126.1、10.102.126.6、10.102.126.5、10.102.126.4、10.102.126.3、10.102.126.2、10.102.126.1
现在,我如何执行IP地址排序
有很多方法可以做到这一点,但我认为按照由整个IP地址组成的数字进行排序是最简单的 因为JavaScript实际上没有整数(只有浮点数),所以让我们按照数字的零填充十六进制表示进行排序,但我觉得这很危险。字符串更直接 请注意,您可以应用任何要生成维度键的转换,因此即使像这样疯狂的转换也应该可以:
function ip_to_hex(s) {
return s.split('.').map(i=>(+i).toString(16).padStart(2, '0')).join('');
}
var cf = crossfilter(data),
dim = cf.dimension(d => ip_to_hex(d.ip));
什么?是的:
“02167e01”
的字符串,crossfilter将对它们进行正确排序(.top()
从最高到最低排序):
请更新您的问题,将相关代码内联到问题中,并明确指出问题所在。对你的问题的简短回答是“是”。问题是怎么做,我的错。我以前很少使用堆栈溢出。我已经编辑了我的问题。谢谢你的回复。
[
{
"ip": "200.22.126.1"
},
{
"ip": "100.22.126.1"
},
{
"ip": "20.102.126.1"
},
{
"ip": "20.22.126.1"
},
{
"ip": "10.102.126.6"
},
{
"ip": "10.102.126.5"
},
{
"ip": "10.102.126.4"
},
{
"ip": "10.102.126.3"
},
{
"ip": "10.102.126.2"
},
{
"ip": "10.102.126.1"
},
{
"ip": "10.22.126.1"
}
]