Сообщение от tenshi
|
зайдём с другого конца..
var c= new Collection([ /* over 9000 */ ])
...
c.add({ name: 'bob', age: 18 })
...
var mature= c.get( ':el.age >= 18' )
что нужно приписать сюда, чтобы выборка в конце происходила за O( log n )
|
Укажи в конструктор не массив, а хеш, где ключи являются возрастом и будет тебе счастье. А ещё лучше научись читать или перестань употреблять странные таблетки, я тебе уже давал и ссылки, где можно было прочитать и здесь писал.
Из мана на сайте либы:
// Создадим коллекцию, каталог музыкальных иснтрументов:
// первичный уровень таблицы будет хеш-таблицей, где ключ — тип инструмента
var db = new Collection({
guitar: {
fender: [
{model: 'JAGUAR BLACKTOP HH RW BLK', price: 27921},
{model: 'STRATOCASTER BLACKTOP HH MN BLK', price: 28390},
{model: 'STANDARD TELECASTER ', price: 18518}
],
gibson: [
{model: 'CUSTOM SHOP LES PAUL CUSTOM EB/GH', price: 159505},
{model: 'LES PAUL STUDIO FIREBURST CHROME HARDWARE', price: 50525}
]
},
bassGuitar: {
fender: [
{model: 'STANDARD JAZZ BASS RW Sunburst', price: 32205},
{model: 'STANDARD PRECISION BASS', price: 30640}
]
}
});
// Теперь выберем все гитары фирмы fender
// для этого сделаем прямой запрос через get
db.get('guitar > fender');
// Выберем модели, дешевле 20-ти тысяч
db.get(':el.price < 20000'); // Ошибка, свойство price не найдено,
// Т.к. отсчёт идёт с самого первого объекта, а не с guitar > fender
// Чтобы установить нужную точку отсчёта, установим активный контекст
db.newContext('guitar > fender');
// Теперь снова сделаем get запрос
db.get(':el.price < 20000'); // Всё ок, т.к. теперь задан нужный контекст обхода
// В случае задания в get прямой ссылки, она также будет теперь отталкиваться от активного контекста
db.get('guitar > fender > 0'); // Ошибка
db.get('0'); // Вернёт запрашиваемый элемент
А теперь скажи, раз у тебя такая упер-пупер либа, как ты сделаешь выбор типа LIKE по произвольному полю без переборов?
PS: А вообще я устал с тобой спорить, я знаю такой тип людей, вроде тебя, и знаю что это глупое занятие. Общайся сам с собой, а я буду общаться с адекватными людьми.