Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在具有通配符的数组中高效查找数组_Javascript_Arrays - Fatal编程技术网

Javascript 在具有通配符的数组中高效查找数组

Javascript 在具有通配符的数组中高效查找数组,javascript,arrays,Javascript,Arrays,我有一个数组对象,其形式如下: [[eventID, IP, timestamp], [eventID, IP, timestamp]... ] 每隔一段时间,我就会收到一个相同格式的新数组对象([eventID,IP,timestamp]) 我需要检查主数组中是否存在具有相同eventID/IP对(很可能)但不匹配时间戳的现有对象 显然,我可以先迭代列表检查eventID,然后检查IP,但这似乎。。。不雅的。 我可以使用indexOf,但我不完全确定数组中用于匹配数组中元素的通配符元素的语法

我有一个数组对象,其形式如下:

[[eventID, IP, timestamp], [eventID, IP, timestamp]... ]
每隔一段时间,我就会收到一个相同格式的新数组对象([eventID,IP,timestamp])

我需要检查主数组中是否存在具有相同eventID/IP对(很可能)但不匹配时间戳的现有对象

显然,我可以先迭代列表检查eventID,然后检查IP,但这似乎。。。不雅的。 我可以使用indexOf,但我不完全确定数组中用于匹配数组中元素的通配符元素的语法


在主数组中搜索[eventID、IP、通配符]最有效的方法是什么?

您可以使用两级键/值结构进行快速查找。传统上,人们会对普通对象执行此操作,但由于ES6,建议对此类动态增长的结构使用
Map
对象

例如,您可以使用一个对象作为具有两个维度(eventId和IP)的哈希,该对象在内部使用嵌套的
Map
对象公开get和set方法:

函数EventHash(){
var hash=新映射;
this.set=函数(eventId、IP、时间戳){
如果(!hash.has(eventId))hash.set(eventId,新映射);
get(eventId).set(IP,时间戳);
归还这个;
};
this.get=函数(eventId,IP){
if(hash.has(eventId))返回hash.get(eventId.get(IP);
}
}
//演示
var hash=new EventHash();
散列集(1,'123.123.123',11111);
hash.set(1,'555.555.555.555',22222);
hash.set(2,'555.555.555.555',33333);
console.log(hash.get(1,'123.123.123.123'));//1111
hash.set(1,'123.123.123',44444);
console.log(hash.get(1,'123.123.123.123'));//4444
console.log(hash.get(5,'123.123.123.123');//不存在

console.log(hash.get(1',);//不存在
这是一次搜索,还是多次搜索?多次搜索。当存在新的eventID/IP对时,主阵列将增长。当eventID/IP对存在时,时间戳将被更新。它必须是一个数组,还是我们可以提出一个允许更快搜索的结构?另外,您能提供一些示例数据吗?我考虑过使用键:值对。出于好奇,我想知道怎么做,但是如果你知道一个整体上最有效的方法,那么我肯定会使用这个结构。我花了2分钟来实现。感觉也很瘦。好东西,谢谢!