【发布时间】:2020-07-03 15:42:00
【问题描述】:
我正在寻找一种在排序结果列表中查找给定领域对象索引的高性能方法。
我知道this 类似的问题,使用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 数组中的相同?我知道有可能创建indexed properties,索引time 属性会提高这种情况下的性能吗?
注意: 在 realm-js api 文档中,indexOf section 不像其他部分那样引用 Array.prototype.indexOf。这让我很乐观,它是一个自己的实现,但没有明确说明。
【问题讨论】:
-
您是否对领域
.indexOf()进行了测试/基准测试?你能用console.log(sortedRecords.indexOf);console.log 函数吗?然后将其与原生 JS 数组.indexOf()进行比较? - 我希望如果您的领域对象知道它已排序(当您调用.sorted('time', true)时,.indexOf()实现可以在基于该字段进行搜索时使用这个事实。但是,如果时间不是主键,它不一定有助于对记录进行排序?主键是时间字段吗?(如果不是,时间字段是唯一的吗?您是否要构建自定义查找?) -
id 和 time 之间有关系吗?我的意思是 ids 也排序了吗?
标签: javascript arrays realm indexof realm-js