如何从以下数组散列中删除元素;
%HoA = (
flintstones => [ {day=>'19'}, {day=>'21'}, {day=>'22'} ],
jetsons => [ {day=>'29'}, {day=>'23'}, {day=>'25'} ],
simpsons => [ {day=>'26'}, {day=>'33'}, {day=>'27'} ]
);
Run Code Online (Sandbox Code Playgroud)
像如何删除如{day=>'21'}从flintstones,使结果看起来像;
%HoA = (
flintstones => [ {day=>'19'}, {day=>'22'} ],
jetsons => [ {day=>'29'}, {day=>'23'}, {day=>'25'} ],
simpsons => [ {day=>'26'}, {day=>'33'}, {day=>'27'} ]
);
Run Code Online (Sandbox Code Playgroud)
我尝试过使用Hash =(); 但这导致undef,我删除的元素的位置
FMc*_*FMc 10
如果您知道[1]要从flintstones数组中删除该元素,可以splice直接使用:
splice @{$HoA{flintstones}}, 1, 1;
Run Code Online (Sandbox Code Playgroud)
如果您只是想知道要删除day = 21的元素,请grep以这种方式使用:
$HoA{flintstones} = [ grep { $_->{day} != 21 } @{$HoA{flintstones}} ];
Run Code Online (Sandbox Code Playgroud)
或者以更好的方式,正如肖恩的回答所示:
@{$HoA{flintstones}} = grep { $_->{day} != 21 } @{$HoA{flintstones}};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |