![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
Пытаюсь сделать поиск по xml положим есть несколько параметров поиска - возраст,рост,вес.
Если выбрать какой-нибудь 1 параметр,то все ОК.Если же больше,то трэйс выводит сначала даные по 1 параметру,потом по 2 и т.д.,как отобрать нужное?Что то ни как алгоритм не придумаю. Какой параметр выбран определяю через switch
__________________
Я просто добрый шутник. |
|
|||||
|
Отображаешь все результаты, параметр - это один столбец.Т.е. 2 параметра в результат выведется два столбца. Если 3 , то три столбца соответственно. А потом щелкаешь по хедерам столбцов и отсортировываешь так как тебе надобно.
__________________
Оптимизация производительности на уровне кода |
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
Цитата:
__________________
Я просто добрый шутник. |
|
|||||
|
Регистрация: Nov 2008
Адрес: Odessa Ukraine
Сообщений: 39
|
А код выложить слабо?
|
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 52
|
scarbo
Отбираем по 1-ому параметру, запихиваем всех отобранных в массив. Из массива отобранных таким же образом отбираем по параметру 2. По сути нужна рекурсивная функция, которая принимает массив с данными и критерии отбора, а возвращает массив с тем, что подошло. |
|
|||||
|
Ну как вариант можно так попробовать.
|
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
to Kill33,спасибо,хороший пример,но у меня не 2 параметра поиска,а 6.И что кучу ifов писать?как бы это к switchу приделать?
__________________
Я просто добрый шутник. |
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 52
|
scarbo
Я же вам сказал, написать рекурсивную функцию, например такую. Даем на вход массив с объектами, массив с именами искомых параметров, и массив с соответствующими значениями искомых параметров. Пример ищет в массиве arr всех с возрастом 20 и ростом 180. var arr:Array = [{name:"Вася", age:20, height:180, weight:107}, {name:"Маша", age:26, height:160, weight:57}, {name:"Петя", age:20, height:180, weight:90}]; trace(findParameters(arr, ["age", "height"], [20, 180])); function findParameters(objArr:Array, paramNamesArr:Array, valuesArr:Array):Array{ var newArr:Array = []; for (var i:Number = 0; i < objArr.length; i++){ if (objArr[i][paramNamesArr.shift()] == valuesArr.shift()) newArr.push(objArr[i]); } if (paramsArr.length > 1) return findParameters(newArr, paramNamesArr, valuesArr) else return newArr; } |
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
__________________
Я просто добрый шутник. Последний раз редактировалось scarbo; 09.12.2008 в 20:04. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|