Я пытаюсь объединить два массива, когда есть ключевое совпадение.Добавить значение массива из массива 1, если совпадение ключей в массиве Array2 (Ruby)
Массив «mac» должен соответствовать «id [0]», и если соответствие истинно, добавьте значение «id [1]» в мой «ip».
Для этого примера будет использовать «компьютер», «IP-адрес» и «MAC-адрес»
id = {
'01:02:03:04:05:06' => 'Desktop'
'07:08:09:10:11:12' => 'Laptop'
}
ip = { '192.168.0.10', '192.168.0.20' }
mac = { '01:02:03:04:05:06', '07:08:09:10:11:12' }
код, я использую до сих пор;
net = ip.zip(mac)
net.each do |ip,mac|
puts "#{ip}/#{mac}"
end
Пример вывода (желательные):
192.168.0.10/01:02:03:04:05:06/Desktop
192.168.0.20/07:08:09:10:11:12/Laptop
Tux, несколько наблюдений: 1. 'ip' и' mac' являются массивами, поэтому заключите в них '[]', а не '{}' (plz edit); 2. путать с блочными переменными (локальными) те же имена, что и массивы 'ip' и' mac'; 3. вы можете цепью, чтобы избежать необходимости в временной переменной 'net' (т. Е.' Ip.zip (mac) .each {| i, m | puts ...} '); 4. Элементы хэша не могут быть идентифицированы с индексами ('id [0]' - это значение, соответствующее ключу '0', или' nil', если нет ключа '0'), поэтому вместо этого скажем что-то вроде:« для заданный элемент 'm'' mac', если 'id' содержит элемент с ключом' m', затем добавьте 'id [m]' to ... ". –