Wuu Posted June 11, 2015 Report Share Posted June 11, 2015 this.state.t.map(function(m, i) { this.state.t[i].show = ((JSON.stringify(m).toLowerCase().replace(/\s+/g, '').indexOf(v.target.value.replace(/\s+/g, '').toLowerCase())) > -1) ? true : false; }.bind(this)); Ir tabulāri dati, mēnesī sanāk ap ~+/-14k. Pie tāda apjoma, prasta meklēšana sāk tormazīt (200ms), nedaudz, tomēr nepatīkami. Princips ir vienkāršs, katram arraja elementam ir this.state.t.show ar iespēju true or false Tb, rādīt/nerādīt. Meklēšana notiek arraja elementa apkopojumā. Meklēšana notiek caur input'u (onChange) Redzu, kā var uzlabot ātrumu, bet varbūt ir iespējams vienkārši uzlabot pārbaudi. Nebūvējot neko pa virsu. Quote Link to comment Share on other sites More sharing options...
0 waplet Posted June 11, 2015 Report Share Posted June 11, 2015 Parasti Regex ir visa lēnuma avots, skaties vai nevari ieekonomēt uz to? Quote Link to comment Share on other sites More sharing options...
0 Wuu Posted June 11, 2015 Author Report Share Posted June 11, 2015 (edited) Tad kā man atbrīvoties no "space"? Tukšumiem? Emm.. nav jēga, imho tupi izņemot, nekas nemainās. Tad paliek tik salīdzinājums "indexOf", ir kaut kas ātrāks? Edited June 11, 2015 by Wuu Quote Link to comment Share on other sites More sharing options...
0 jurchiks Posted June 12, 2015 Report Share Posted June 12, 2015 Man jau liekas, ka visu bremzi rada JSON.stringify(m). Vai tas tiešām ir nepieciešams? Quote Link to comment Share on other sites More sharing options...
0 Wuu Posted June 13, 2015 Author Report Share Posted June 13, 2015 m ir arrays, pamēģināšu, ar for loopu katram cauri skriet un pamērīt ātrumu. Quote Link to comment Share on other sites More sharing options...
0 martins256 Posted June 15, 2015 Report Share Posted June 15, 2015 1. Šis te ir konstants un to vajadzētu aprēķināt tikai vienu reizi nevis katrā iterācijā: v.target.value.replace(/\s+/g, '').toLowerCase() 2. .map() izmantošana šajā gadījumā ir bezjēdzīga, jo nekas netiek atgriezts. forEach() būtu daudz piemērotāks. 3. Ja whitespace novākšana ar .replace() nav īpaši nepieciešama, tad to ņem ārā. Strādās ātrāk. 4. Ja meklēšana notiek vairāk kā vienu reizi, tad labāk izveido atsevišķu masīvu ar JSON.stringify(m).toLowerCase().replace(/\s+/g, '') vērtībām. var search = v.target.value.replace(/\s+/g, '').toLowerCase(); this.state.t.forEach(function(m) { m.show = ((JSON.stringify(m).toLowerCase().indexOf(search)) > -1) ? true : false; }); Quote Link to comment Share on other sites More sharing options...
Question
Wuu
Ir tabulāri dati, mēnesī sanāk ap ~+/-14k. Pie tāda apjoma, prasta meklēšana sāk tormazīt (200ms), nedaudz, tomēr nepatīkami.
Princips ir vienkāršs, katram arraja elementam ir this.state.t.show ar iespēju true or false
Tb, rādīt/nerādīt. Meklēšana notiek arraja elementa apkopojumā.
Meklēšana notiek caur input'u (onChange)
Redzu, kā var uzlabot ātrumu, bet varbūt ir iespējams vienkārši uzlabot pārbaudi. Nebūvējot neko pa virsu.
Link to comment
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.