目标:我想检查哈希中的所有条目是否以某种方式相等(此处为计数)。
我讨厌的解决方案:
# initialize some fake data
my @list1 = (2, 3);
my @list2 = (1, 2);
my %hash = (12 => \@list1, 22 => \@list2);
# here starts the quest for the key
my $key;
foreach my $a (keys %hash) {
$key = $a;
}
# some $key is set
# here starts the actual comparision
my $count = scalar(@{%hash{$key}});
foreach my $arr_ref (%hash) {
my $actcount = scalar(@$arr_ref);
print "some warning" if $actcount != $count;
}
我知道我也可以在循环的第一次迭代中存储大小,然后我不需要提前获取密钥。但它会在每次迭代中引起一个条件语句。因此我喜欢避免它。
问题: 从哈希中获取密钥的正确方法是什么?
增加: 应该有可能像 (键%哈希)[0]
答案 0 :(得分:1)
my ($key) = keys %hash;
应该可以工作,或者您可以通过将您指定的标量括在括号中来强制列表上下文:
each
另一种方法是在标量上下文中使用my $key = each %hash;
:
for my $arr_ref (values %hash) {
在测试循环中,您只对值感兴趣,所以不要迭代键:
success: function( json ) {
$.each(items, function (i, item) {
$('#mySelect').append($('<option>', {
value: item.value,
text : item.text
}));
)};
}