Digamos que tem uma lista de valores em um vetor grande em JS.<\/p>\n
N\u00e3o seria bom poder filtrar os dados de forma gen\u00e9rica escrevendo a condicional em uma O c\u00f3digo abaixo \u00e9 um exemplo do que pode fazer usando o Evitar o Os dados deste pequeno programa, por exemplo, voc\u00ea pode te-los obtido por uma requisi\u00e7\u00e3o xmlHttpRequest (usando o\u00a0 O filtro pode ser fruto de uma pesquisa feita com um Um exemplo um pouco mais avan\u00e7ado pode ser um aplicativo Os dados foram gerados usando os dados da\u00a0https:\/\/www.datakick.org<\/a>\u00a0e voc\u00ea pode ver ele trabalhando aqui:\u00a0http:\/\/yeapf.com\/samples\/yInfoObj<\/a>\u00a0ou pode baixar o exemplo daqui:\u00a0http:\/\/yeapf.com\/samples\/yInfoObj.zip<\/a><\/p>\n Lembre que, ao observar o exemplo, todos os dados est\u00e3o vindo na carga da p\u00e1gina ent\u00e3o desconte isso da sua aprecia\u00e7\u00e3o, j\u00e1 que se espera que esses dados cheguem ao seu aplicativo paulatinamente ou de forma mais apurada.<\/p>\n","protected":false},"excerpt":{"rendered":" Digamos que tem uma lista de valores em um vetor grande em JS. N\u00e3o seria bom poder filtrar os dados de forma gen\u00e9rica escrevendo a condicional em uma string e sem ter que usar o eval()\u00a0do javascript? O c\u00f3digo abaixo \u00e9 um exemplo do que pode fazer usando o yloader.js list=[ { age: 13, name: […]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[8],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5O6UV-55","jetpack-related-posts":[{"id":91,"url":"http:\/\/www.yeapf.com\/wp\/?p=91","url_meta":{"origin":315,"position":0},"title":"Aplicativos mono p\u00e1gina","date":"mar\u00e7o 14, 2014","format":false,"excerpt":"Aplicativos que usam s\u00f3 uma p\u00e1gina t\u00eam um lugar assegurado no desenvolvimento de software atual e futuro. Bem feitos s\u00e3o elegantes e f\u00e1ceis de manter. Tamb\u00e9m s\u00e3o uma m\u00e3o na roda na hora de fazer um aplicativo que funcione tanto em desktop como em mobile. Para construirmos um aplicativo com\u2026","rel":"","context":"Em "Desenvolvimento"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":321,"url":"http:\/\/www.yeapf.com\/wp\/?p=321","url_meta":{"origin":315,"position":1},"title":"Server Side Events com YeAPF","date":"janeiro 19, 2017","format":false,"excerpt":"Manter uma tela com dados din\u00e2micos atualizados n\u00e3o \u00e9 f\u00e1cil. Uma solu\u00e7\u00e3o \u00e9 empregar XMLHttpRequest e ficar fazendo polling sobre uma base de tempo regular. Assim perguntar\u00edamos ao servidor se h\u00e1 modifica\u00e7\u00f5es sobre o escopo desejado. O problema desta aproxima\u00e7\u00e3o \u00e9 que ficamos fazendo um monte de requisi\u00e7\u00f5es ao servidor\u2026","rel":"","context":"Em "Desenvolvimento"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":373,"url":"http:\/\/www.yeapf.com\/wp\/?p=373","url_meta":{"origin":315,"position":2},"title":"O uso do db_queryAndFillArray() em requisi\u00e7\u00f5es Ajax e RESTFul","date":"mar\u00e7o 3, 2018","format":false,"excerpt":"Em YeAPF a forma mais simples de responder a uma requisi\u00e7\u00e3o em que o resultado vem de apenas uma consulta SQL (simples ou combinada) \u00e9 a seguinte: function qTeste($a) { \u00a0 global $u, $xq_start; $useColNames = true; $xq_count=999; $ret=''; \/\/ publish query variables as local variables extract(xq_extractValuesFromQuery()); $xq_start=isset($xq_start)?intval($xq_start):0; switch($a) {\u2026","rel":"","context":"Em "Yet Another PHP Framework"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5,"url":"http:\/\/www.yeapf.com\/wp\/?p=5","url_meta":{"origin":315,"position":3},"title":"Migrando bancos de dados com ydbmigrate","date":"janeiro 10, 2014","format":false,"excerpt":"Desenvolver um aplicativo implica em ter um bom banco de dados, mas responder rapidamente a uma migra\u00e7\u00e3o estrutural \u00e9 mais um pesadelo do que uma noite bem dormida. Dentre as ferramentas que o YeAPF disp\u00f5e se encontra o ydbmigrate. Esta ferramenta nos permite exportar e importar dados de varias fontes\u2026","rel":"","context":"Em \"firebird\"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":39,"url":"http:\/\/www.yeapf.com\/wp\/?p=39","url_meta":{"origin":315,"position":4},"title":"Ajax com YeAPF","date":"mar\u00e7o 3, 2014","format":false,"excerpt":"Pretendo deixar cada uma das postagens o mais simples poss\u00edvel.\u00a0 Mas, n\u00e3o \u00e9 poss\u00edvel proceder com este se antes voc\u00ea n\u00e3o instalou e configurou seu ambiente de desenvolvimento e o YeAPF.\u00a0 Este post (http:\/\/inovacaosistemas.com.br\/wp\/?p=25) lhe pode ajudar a fazer isso, caso n\u00e3o o tenha feito ainda. Introdu\u00e7\u00e3o Nos prim\u00f3rdios da\u2026","rel":"","context":"Post similar","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":25,"url":"http:\/\/www.yeapf.com\/wp\/?p=25","url_meta":{"origin":315,"position":5},"title":"Primeiros passos com YeAPF","date":"fevereiro 22, 2014","format":false,"excerpt":"Tive oportunidade de ver minha irm\u00e3 mais nova andar sozinha pela primeira vez e nunca mais esqueci da experi\u00eancia. \u00a0Anos depois naceram os filhos e o impacto \u00e9 tremendo. Brinco com quem programa usando YeAPF de que s\u00e3o meus filhos, carinhosamente. Por isso que os primeiros passos s\u00e3o importantissimos para\u2026","rel":"","context":"Em "Yet Another PHP Framework"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/315"}],"collection":[{"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=315"}],"version-history":[{"count":1,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/315\/revisions"}],"predecessor-version":[{"id":316,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/315\/revisions\/316"}],"wp:attachment":[{"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=315"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.yeapf.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}string<\/code> e sem ter que usar o eval()<\/code>\u00a0do javascript?<\/p>\nyloader.js<\/code><\/p>\nlist=[ { age: 13, name: \"David\" }, { age: 40, name: \"Ann\"} , { age: 6, name: \"Laura\"} , { age: 15, name: \"Mark\"}, { age: 51, name: \"John\"} ];\r\nvar filter=yLexObj(\"age<18\");\r\nfor(var person=0; person<list.length; person++) { \r\n if (filter.solve(list[person])) \r\n console.log(list[person]) \r\n}<\/pre>\neval()<\/code>\u00a0do javascript \u00e9 uma quest\u00e3o de seguran\u00e7a b\u00e1sica. Ent\u00e3o um parser<\/code>\u00a0simples associado com um analisador l\u00e9xico<\/code>\u00a0lhe d\u00e3o a suficiente pot\u00eancia como para poder construir aplicativos mais simples.<\/p>\nycomm.invoke()<\/code>\u00a0) ou uma requis\u00e7\u00e3o RESTful (usando ycomm.crave()<\/code>\u00a0)<\/p>\ninput<\/code>\u00a0em que o usu\u00e1rio filtra os dados obtidos do servidor localmente (ou seja, sem consultar o servidor). Isso \u00e9 fant\u00e1stico para aplicativos embarcados ou para limitar ou diminuir a carga das consultas ao servidor.<\/p>\ncordova<\/code>\u00a0em que uma lista de produtos \u00e9 obtida do servidor e depois ela \u00e9 consultada offline,\u00a0<\/code>como no c\u00f3digo logo abaixo:<\/p>\n<script src=\"js\/yloader.js\"><\/script>\r\n<script src=\"js\/ystorage.js\"><\/script>\r\n<script src=\"js\/dados-testes.js\"><\/script>\r\n\r\n<body>\r\n <h1>Teste de yInfoObj.filter()<\/h1>\r\n <input type=text id='filtro' value=\"Name like '%Chocolate%'\" size=80><input type=button value='Filtrar' id=\"btnFiltrar\">\r\n <table id=\"tbl_resultado\"><\/table>\r\n<\/body>\r\n\r\n<script>\r\n \/* esta rotina se encarrega de mostrar item a item o resultado da pesquisa *\/\r\n function mostrarItem(a) {\r\n var tbl=y$('tbl_resultado');\r\n var r=tbl.insertRow(-1), c1=r.insertCell(-1), c2=r.insertCell(-1);\r\n c1.innerHTML=\"<td>{0}<\/td>\".format(a.BARCODE);\r\n c2.innerHTML=\"<td>{0}<div><b>{1}<\/b><\/div><\/td>\".format(a.BrandName, a.Name);\r\n }\r\n\r\n \/* esta funcao resulta chamada quando a pesquisa finaliza *\/\r\n function fimDoFiltro() {\r\n alert(\"fim da pesquisa\");\r\n }\r\n\r\n \/* funcao associada ao click do botao 'btnFiltrar' *\/\r\n function filtrarDados() {\r\n var filtro=y$('filtro').value;\r\n var tbl=y$('tbl_resultado');\r\n while (tbl.rows.length>0)\r\n tbl.deleteRow(0);\r\n dados.filter(mostrarItem, fimDoFiltro, filtro);\r\n }\r\n\r\n \/* variavel global com o atalho para os dados *\/\r\n var dados;\r\n\r\n addOnLoadManager(\r\n function() {\r\n \/* crio um objeto de dados desconectado do mundo exterior *\/\r\n dados = yInfoObj(\"\", \"dados\", \"BARCODE\");\r\n\r\n bandeira = ystorage.getItem(\"bandeira\") || { inicializado: false};\r\n \/* insiro nele os dados de testes (na segunda rodada est\u00e3o l\u00e1 j\u00e1 que persistem) *\/\r\n if (!bandeira.inicializado) {\r\n console.log(\"Carregando os dados..\");\r\n dados.insertData(dados_testes);\r\n console.log(\"Pronto!\");\r\n bandeira.inicializado=true;\r\n ystorage.setItem(\"bandeira\", bandeira);\r\n \r\n }\r\n \r\n \/* associo o botao com o gestor do evento *\/\r\n addEvent(\"btnFiltrar\", \"click\", filtrarDados)\r\n });\r\n\r\n<\/script><\/pre>\n