如何实现一个索引数组?场景像下面这段代码class User { constructor(id, name, age) { this.id = id this.name = name this.age = age }}const users = [ new User(1, 'rxliuli', 18), new User(2, '琉璃', 17), new User(3, '灵梦', 16), new User(4, '楚轩', 23), new User(5, '月姬', 1000), new User(6, '音无', 16),]console.log(users.find(({ id }) => id === 1))console.log(users.find(({ name }) => name === '音无'))console.log(users.filter(({ age }) => age >= 18))难道实现这些功能就只能遍历么?能否实现某种数据结构能够指定某个字段有索引,然后能够以常量时间根据该字段进行查找/过滤等操作呢?Pass: 结构化的数据库一般都有索引这种功能,为何程序中反而没有呢?
2 回答
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
你可以自己做一个反向索引(reverse index)啊,很简单,就是个string => array的映射。比如:
var revIdxOnAge = new Array(1000);
revIdxOnAge[18] = [new User(1, 'rxliuli', 18)];
revIdxOnAge[17] = [new User(2, '琉璃', 17)];
...
var usersAgeGraterThan23 = revIdxOnAge.filter((e,i)=>i>23).reduce((a,b)=>[...a,...b], []);
但是你给的数据太过于离散了,所以没有必要。少数据量或者数据离散度很高的情况下,还不如便利方便一些。
添加回答
举报
0/150
提交
取消