Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G_Z 31.12.2017 06:30
Для полноценного поиска лучше использовать базу данных, а не заниматься перекладыванием данных и их перебором.@main[] $hash[^json:parse[{ "name":"keys", "count":"2", "created":"1514657168", "updated":"1514659786", "data":[ {"id":"ce95c0ccfed2d119","email":"mail@mail.com","server":"example.ru","active":"","license":"c4205307-ef4b-4ba9-a4b6-c9b1ec575358","api":"0737618b-7e3e-4db4-a95a-5053663cc42f","secret":"576a1c21510241bc","public":"2a86503501a33577","access":"","reload":"","created":"1514657168","expires":"1546193168"}, {"id":"ebed23804532d852","email":"mail@mail.com","server":"example.com","active":"","license":"854a3f3a-22d3-4b9e-8f8b-da6c11f8ebe7","api":"fbc6c4e5-ef77-4d17-adb9-8deade1ade00","secret":"9286bc5916af8835","public":"4e42b91262df310d","access":"","reload":"","created":"1514659786","expires":"1546195786"} ] }]] $selected[^select[$hash.data][ $.email[mail@mail.com] $.server[example.ru] ]] <pre>^json:string[$selected;$.indent(true)]</pre> @select[data;condition] $result[^hash::create[]] $target[^stamp[$condition]] ^data.foreach[index;item]{ $stamp[^stamp[^item.intersection[$condition]]] ^if($stamp eq $target){ $result.$index[$item] } } @stamp[hash] $result[^math:md5[^hash.foreach[key;value]{$key=$value}]]Ещё быстрее будет, если сначала скомпилировать функцию поиска по заранее заданному списку искомых полей, а потом её использовать без пересечения хешей и перебора ключей.