jsonnet - 从数组中删除空值
jsonnet - remove null values from array
我想从数组中删除空值和重复值,重复值正在删除,空不是
模板:
local sub = [ "", "one", "two", "two", ""];
{
env: std.prune(std.uniq(std.sort(sub)))
}
输出:
{
"env": [
"",
"one",
"two"
]
}
std.prune 应该删除 empty, null 但它没有发生,我做错了什么吗?还是有其他方法可以删除空值?
根据 https://jsonnet.org/ref/stdlib.html#prune
"Empty" is defined as zero length arrays
, zero length objects
, or
null
values.
即""
不考虑修剪,然后您可以使用理解作为
(还要注意使用 std.set()
,因为它的字面意思是 uniq(sort())
):
local sub = [ "", "one", "two", "two", ""];
{
env: [x for x in std.set(sub) if x!= ""]
}
或 std.length(x) > 0
用于该条件。
您可以使用 std.filter(func,arr) 只保留非空条目。
std.filter(func, arr)
Return a new array containing all the elements of arr for which the func >function returns true.
您可以将 std.filter
的第一个参数指定为采用单个参数的函数,如果参数不是 ""
,则 returns 为 true。第二个参数是你的数组。
local nonEmpty(x)= x != "";
local sub = [ "", "one", "two", "two", ""];
{
env: std.uniq(std.filter(nonEmpty,sub))
}
您也可以内联定义它:
local sub = [ "", "one", "two", "two", ""];
{
env: std.uniq(std.filter(function(x) x != "",sub))
}
这将从数组中删除空值并产生:
> bin/jsonnet fuu.jsonnet
{
"env": [
"one",
"two"
]
}
我想从数组中删除空值和重复值,重复值正在删除,空不是
模板:
local sub = [ "", "one", "two", "two", ""];
{
env: std.prune(std.uniq(std.sort(sub)))
}
输出:
{
"env": [
"",
"one",
"two"
]
}
std.prune 应该删除 empty, null 但它没有发生,我做错了什么吗?还是有其他方法可以删除空值?
根据 https://jsonnet.org/ref/stdlib.html#prune
"Empty" is defined as zero length
arrays
, zero lengthobjects
, ornull
values.
即""
不考虑修剪,然后您可以使用理解作为
(还要注意使用 std.set()
,因为它的字面意思是 uniq(sort())
):
local sub = [ "", "one", "two", "two", ""];
{
env: [x for x in std.set(sub) if x!= ""]
}
或 std.length(x) > 0
用于该条件。
您可以使用 std.filter(func,arr) 只保留非空条目。
std.filter(func, arr)
Return a new array containing all the elements of arr for which the func >function returns true.
您可以将 std.filter
的第一个参数指定为采用单个参数的函数,如果参数不是 ""
,则 returns 为 true。第二个参数是你的数组。
local nonEmpty(x)= x != "";
local sub = [ "", "one", "two", "two", ""];
{
env: std.uniq(std.filter(nonEmpty,sub))
}
您也可以内联定义它:
local sub = [ "", "one", "two", "two", ""];
{
env: std.uniq(std.filter(function(x) x != "",sub))
}
这将从数组中删除空值并产生:
> bin/jsonnet fuu.jsonnet
{
"env": [
"one",
"two"
]
}