arrays - Eliminar duplicados en el conjunto(JSONiq)
duplicates zorba (3)
regexp: reemplazar definitivamente no es el camino a seguir para este problema.
Si bien la solución de Matthias no funciona en Try Zorba, este script hace:
let $x := [1, 2, 4 ,3, 3, 3, 1, 2, 5]
return [ distinct-values( jn:members($x) ) ]
Vuelve (prueba en el enlace de arriba):
[ 1, 2, 3, 4, 5 ]
El script debe ser un poco más detallado para el procesador DataPower Gateways JSONiq. Allí obtienes bonitos resultados impresos gratis:
$ cat dv.xq
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:method "json";
declare option jsoniq-version "0.4.42";
[ distinct-values( jn:members(.) ) ]
$
$ coproc2 dv.xq <(echo ''[1, 2, 4 ,3, 3, 3, 1, 2, 5]'') http://dp1-l3:2226; echo
[
1,
2,
4,
3,
5
]
$
Hermann.
Me gustaría eliminar duplicados en una matriz JSONiq.
let $x := [1, 2, 4 ,3, 3, 3, 1, 2, 5]
¿Cómo puedo eliminar los duplicados en $ x?
let $x := [1, 2, 4 ,3, 3, 3, 1, 2, 5]
return [ distinct-values($x[]) ]
Use la función de reemplazo varias veces:
replace($x, "([1-5])(.*)/1", "$1")
Aquí hay un equivalente de JavaScript totalmente funcional:
[1,2,4,3,3,1,2,5].toString().replace(/([1-5]),(/1)/g, "$1").replace(/(,[1-5])(.*)(/1)/g,"$1$2").replace(/([1-5])(.*)(,/1)/g,"$1$2")
Aquí hay un equivalente de JavaScript genérico a través del método JSON.parse()
, que elimina los duplicados automáticamente:
var foo = [1,2,4,3,3,1,2,5];
var bar = "{" + foo.toString() + "}"
var baz = bar.replace(/(/d)(.)/g , ''/u0022$01/u0022:/u0022/u0022$02'')
var bop = JSON.parse(baz)
var buz = JSON.stringify(bop).replace("{","[").replace("}","]").replace(/:""/g,"")
var result = Function("return" + buz)()
Aquí hay un arnés de prueba: