optimization of search

This commit is contained in:
zadam 2020-08-28 23:20:22 +02:00
parent 5a8c3f6a2b
commit 172f3689fa
2 changed files with 10 additions and 2 deletions

View File

@ -152,6 +152,12 @@ function getSomePath(note, path = []) {
function getNotePath(noteId) { function getNotePath(noteId) {
const note = noteCache.notes[noteId]; const note = noteCache.notes[noteId];
if (!note) {
console.trace(`Cannot find note ${noteId} in cache.`);
return;
}
const retPath = getSomePath(note); const retPath = getSomePath(note);
if (retPath) { if (retPath) {

View File

@ -4,6 +4,7 @@ class NoteSet {
constructor(notes = []) { constructor(notes = []) {
/** @type {Note[]} */ /** @type {Note[]} */
this.notes = notes; this.notes = notes;
this.noteIdSet = new Set(notes.map(note => note.noteId));
/** @type {boolean} */ /** @type {boolean} */
this.sorted = false; this.sorted = false;
} }
@ -11,6 +12,7 @@ class NoteSet {
add(note) { add(note) {
if (!this.hasNote(note)) { if (!this.hasNote(note)) {
this.notes.push(note); this.notes.push(note);
this.noteIdSet.add(note.noteId);
} }
} }
@ -25,12 +27,12 @@ class NoteSet {
} }
hasNoteId(noteId) { hasNoteId(noteId) {
// TODO: optimize return this.noteIdSet.has(noteId);
return !!this.notes.find(note => note.noteId === noteId);
} }
mergeIn(anotherNoteSet) { mergeIn(anotherNoteSet) {
this.notes = this.notes.concat(anotherNoteSet.notes); this.notes = this.notes.concat(anotherNoteSet.notes);
this.noteIdSet = new Set(this.notes.map(note => note.noteId));
} }
minus(anotherNoteSet) { minus(anotherNoteSet) {