循环中的木偶在数组中添加了空元素
Puppet in cycle added empty elements in array
$hash_arr_1 = { b => 2, c => 3, f => 1 }
$arr = ['a', 'c', 'd', 'f', 'e']
$hash_arr_2 = $arr.map |$param| {
if has_key($hash_arr_1, $param) {
{$param => $hash_arr_1[$param]}
}
}
notice($hash_arr_2)
Result: [{ , c => 3, , f => 1, ,}]
数组中没有空元素怎么办?
这里的问题是你在使用 map
lambda 函数,而你真的想使用 filter
。链接文档的摘要如下:
Applies a lambda to every value in a data structure and returns an array or hash containing any elements for which the lambda evaluates to true.
所以适合您的解决方案是:
$hash_arr_2 = $hash_arr_1.filter |$key, $value| { $key in $arr }
这将遍历散列 $hash_arr_1
的键,使用提供的条件检查键是否作为数组的成员存在 $arr
,然后 return 散列只有评估为 true 的键值对。
$hash_arr_1 = { b => 2, c => 3, f => 1 }
$arr = ['a', 'c', 'd', 'f', 'e']
$hash_arr_2 = $arr.map |$param| {
if has_key($hash_arr_1, $param) {
{$param => $hash_arr_1[$param]}
}
}
notice($hash_arr_2)
Result: [{ , c => 3, , f => 1, ,}]
数组中没有空元素怎么办?
这里的问题是你在使用 map
lambda 函数,而你真的想使用 filter
。链接文档的摘要如下:
Applies a lambda to every value in a data structure and returns an array or hash containing any elements for which the lambda evaluates to true.
所以适合您的解决方案是:
$hash_arr_2 = $hash_arr_1.filter |$key, $value| { $key in $arr }
这将遍历散列 $hash_arr_1
的键,使用提供的条件检查键是否作为数组的成员存在 $arr
,然后 return 散列只有评估为 true 的键值对。