Показать сообщение отдельно
  #109 (permalink)  
Старый 01.11.2012, 00:58
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от 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: А вообще я устал с тобой спорить, я знаю такой тип людей, вроде тебя, и знаю что это глупое занятие. Общайся сам с собой, а я буду общаться с адекватными людьми.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 01.11.2012 в 01:13.
Ответить с цитированием