首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >消除数组中的重复项(JSONiq)

消除数组中的重复项(JSONiq)
EN

Stack Overflow用户
提问于 2013-10-27 13:48:13
回答 3查看 882关注 0票数 2

我想删除JSONiq数组中的重复项。

代码语言:javascript
复制
let $x := [1, 2, 4 ,3, 3, 3, 1, 2, 5]

如何消除$x中的副本?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-14 22:11:46

代码语言:javascript
复制
let $x := [1, 2, 4 ,3, 3, 3, 1, 2, 5]
return [ distinct-values($x[]) ]
票数 3
EN

Stack Overflow用户

发布于 2013-11-06 20:09:01

多次使用替换函数

代码语言:javascript
复制
replace($x, "([1-5])(.*)\1", "$1")

下面是一个功能齐全的JavaScript等效程序:

代码语言:javascript
复制
[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")

下面是通过JavaScript方法实现的泛型JSON.parse()等价,该方法自动删除重复项:

代码语言:javascript
复制
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)()

下面是一个测试工具:

  • JSONiq在线测试仪
票数 0
EN

Stack Overflow用户

发布于 2015-12-13 12:54:43

regexp:替换绝对不是解决这个问题的方法。

虽然Matthias的解决方案在Try Zorba上不起作用,但是这个剧本可以:

代码语言:javascript
复制
let $x := [1, 2, 4 ,3, 3, 3, 1, 2, 5]
return [ distinct-values( jn:members($x) ) ]

它返回(在上面的链接上试用):

代码语言:javascript
复制
[ 1, 2, 3, 4, 5 ]

对于DataPower网关 JSONiq处理器来说,脚本需要更详细一些。在那里你可以免费得到打印的结果:

代码语言:javascript
复制
$ 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
]
$ 

赫尔曼。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19618767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档