首页 > 解决方案 > 循环中的木偶在数组中添加了空元素

问题描述

$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,   ,}]

如何做到数组中没有空元素?

标签: puppet

解决方案


这里的问题是您map在真正想要使用filter. 链接文档的摘要如下:

将 lambda 应用于数据结构中的每个值,并返回一个数组或散列,其中包含 lambda 计算结果为 true 的任何元素。

因此,您的解决方案是:

$hash_arr_2 = $hash_arr_1.filter |$key, $value| { $key in $arr }

这将遍历 hash 的键$hash_arr_1,检查键是否作为具有提供条件的数组的成员存在$arr,然后返回仅包含评估为 true 的键值对的散列。


推荐阅读