Javascript RealmJS:在排序结果列表中查找元素索引的有效方法

Javascript RealmJS:在排序结果列表中查找元素索引的有效方法,javascript,arrays,realm,indexof,realm-js,Javascript,Arrays,Realm,Indexof,Realm Js,我正在搜索一种在排序结果列表中查找给定领域对象索引的有效方法。 我知道类似的问题,使用indexOf得到了回答,因此我当前的解决方案如下所示: const sortedRecords = realm.objects('mySchema').sorted('time', true) // 'time' property is a timestamp // grab element of interest by id (e.g. 123) const item = realm.objectForP

我正在搜索一种在排序结果列表中查找给定领域对象索引的有效方法。 我知道类似的问题,使用
indexOf
得到了回答,因此我当前的解决方案如下所示:

const sortedRecords = realm.objects('mySchema').sorted('time', true) // 'time' property is a timestamp

// grab element of interest by id (e.g. 123)
const item = realm.objectForPrimaryKey('mySchema','123')

// find index of that object in my sorted results list
const index = sortedRecords.indexOf(item)
这里我最关心的是大型数据集的性能。领域列表的
indexOf
实现是否对此有所改进,还是与JavaScript数组相同?我知道可以创建,在这种情况下,索引
time
属性会提高性能吗

注:
在RealmJSAPI文档中,不像其他部分那样引用。这让我感到乐观,因为这是一个自己的实现,但没有明确说明。

领域查询方法返回一个
结果
对象,它与
数组
对象非常不同,主要区别在于,第一个记录可以随着时间的推移而改变,即使不调用它的方法:向源模式添加和/或删除记录可能会导致对
结果
对象的改变

Results.indexOf
Array.indexOf
之间唯一的共同点是方法的名称

曾经说过这很容易,也可以说比较这两种方法的效率是没有意义的

一般来说,所有
indexOf
实现都存在一个共同的问题,即它们需要顺序扫描,而在最坏的情况下(即未找到的情况),则需要完全扫描。针对10个元素执行的wort
indexOf
对程序性能没有影响,而针对1M个元素执行的最佳
indexOf
对程序性能有严重影响。如果可能,最好避免对大量数据使用
indexOf


希望这能有所帮助。

您是否对领域
.indexOf()
进行了测试/基准测试?你能用
console.log(sortedRecords.indexOf)来记录函数吗?然后将其与本机JS数组
.indexOf()
?-我希望,如果您的领域对象知道它已排序(当您调用
.sorted('time',true)
时,
.indexOf()
实现可以在基于该字段进行搜索时使用这一事实。但是,如果时间不是主键,则对记录排序不一定有帮助。主键是时间字段吗?(如果不是,时间字段是唯一的吗?你想建立一个自定义的查找吗?)id和时间之间有关系吗?我的意思是id也被排序了吗?