puppet - 循环中的木偶在数组中添加了空元素
问题描述
$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
在真正想要使用filter
. 链接文档的摘要如下:
将 lambda 应用于数据结构中的每个值,并返回一个数组或散列,其中包含 lambda 计算结果为 true 的任何元素。
因此,您的解决方案是:
$hash_arr_2 = $hash_arr_1.filter |$key, $value| { $key in $arr }
这将遍历 hash 的键$hash_arr_1
,检查键是否作为具有提供条件的数组的成员存在$arr
,然后返回仅包含评估为 true 的键值对的散列。
推荐阅读
- azure - 如何通过 portal.azure.com 将用户添加到我的 AAD 租户?
- visual-studio - Visual Studio 2017 在发布到 Azure WebApp 的构建阶段停止
- bash - 在 shell 脚本中打开 VS Code 项目
- c# - NEST 的泛型类型无效
- bash - 用于更改 PDF 标题的 Bash 脚本
- javascript - 在onchange函数javascript中调用onchange函数
- cytoscape.js - Cytoscape cy png 创建空图像
- java - 当它的焦点设置为false时如何检测ListView中的复选框的点击
- oracle - FOPEN 不接受目录路径
- multithreading - 标量泄露:-2 标量泄露:多线程 perl 脚本中的 2 个警告