亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何實現一個簡單的有索引的數組?

如何實現一個簡單的有索引的數組?

如何實現一個索引數組?場景像下面這段代碼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], []);

但是你給的數據太過于離散了,所以沒有必要。少數據量或者數據離散度很高的情況下,還不如便利方便一些。


查看完整回答
反對 回復 2019-05-19
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

都現代化社會了Map了解一下老鐵,構建時用名稱或者一個唯一值作為鍵就能索引用法參照

我是分割線
傳送門Map-MDN


查看完整回答
反對 回復 2019-05-19
  • 2 回答
  • 0 關注
  • 864 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號