Первый раз сталкиваюсь с такой проблемой.
const articleDB = new DB(json);
console.log(articleDB.get(1));
articleDB.delete(1);
for(const article of articleDB.byTagIterator('oracle')) {
console.log(article)
}
saveToFile(articleDB.toJSON());
Object.keys({2:0, 3:0, 1:0}) // ['1', '2', '3']
, возможно этот факт тебе чем-то поможет. ну вот нихрена не так.а ты руками замерь. Хз что у них там на самом деле значат ops/sec.
unshift
- неоптимально. А вот добавить один элемент в уже имеющийся массив от push
неотличимо.хотя вид классов не интуитивно понятный этому не способствует
class DB {
constructor(json) {
// начальная подготовка структуры
}
toJSON() {
// экспорт структуры для сохранения
}
reversed() {}
reversedIterator() {}
byTag(tag) {}
byTagIterator(tag) {}
add(record) {}
get(id) {}
delete(id) {}
}
const isPosts = (posts: unknown): posts is Posts => !!posts
&& typeof posts === 'object'
const isPosts = (posts: unknown): posts is Posts => !!posts
&& typeof posts === 'object'
//&& ...
Posts
, а не "какой-то объект" и вообще не какая-то неведомая хрень.Posts
. onloadend
на классический onload
.картинка.src =
и картинка.onload =
- возможно событие отрабатывает прямо при присваивании, т.к. ничего грузить не надо(хотя и те должно бы).
Особенно это касается scss и прочих препроцессоров - если вы их используете, то пользователю желательно предлагать на подключение сразу оба варианта: и собранный css и исходный scss.