据我了解,在更新分配empty
中使用|=
会删除该条目,类似于del(path)
,并且del(path)
也可以在数组中使用。 / p>
我试图选择性地删除和修改数组条目,但结果很奇怪。在尝试理解问题时,我将代码最小化为:
过滤器:.[]|=empty
输入:[0,1,2,3,4,5]
输出:
[
1,
3,
5
]
在线试用here
显然,仅偶数数组索引也被删除。为什么?
答案 0 :(得分:1)
如评论中所述,jq对 int indexName = src.lastIndexOf("/");
if (indexName == src.length()){
src = src.substring(1,indexName);
}
indexName = src.lastIndexOf("/");
String name = src;
name = name.replace(":",""); // replace all ":" with ""
name = name.replaceAll("[^a-zA-Z0-9-.]", "");
for(int i = 0; i < name.length() - 3; i++){ //replaces all but the last "." for the file extention
name = name.replaceFirst(".","");
}
的处理随时间而变化。有人可能会期望,对于每个数组,A,.[] |= empty
都会产生A | (.[] |= empty)
的理论,即表达式应导致A中的每个项目都被[]
取代。
无论如何,当前的(jq 1.6)实现显然是错误的,在此示例中尤其明显:
empty