arrays json duplicates zorba jsoniq

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: