Это работает
let myArr = [{"id":1, "performed":1},{"id":12, "performed":1},{"id":34, "performed":13}]
let conditon_id = [ 12,34,34];
let filtered=myArr.filter(value => {
if(value.performed==1 && conditon_id.includes(value.id)) {
return value;
}
})
console.log(filtered)
use warnings FATAL => 'uninitialized';
use Carp ();
$SIG{__DIE__} = \&Carp::confess;
первая строка делает предупреждение фатальным. Следующие два вызывают отслеживание стека, когда Ваша программа умирает.
Вместо грязной игры с %SIG
предложенный всеми остальными, всего use Carp::Always
и быть сделанным.
Примечание, что можно ввести модули в сценарий без исходных модификаций просто путем выполнения его с perl -MCarp::Always
; кроме того, можно установить PERL5OPT
переменная среды к -MCarp::Always
, чтобы иметь загруженный, даже не изменяя вызов сценария. (См. perldoc perlrun
.)
Ссылка на значение undef не была бы проблемой сам по себе, но она может вызвать предупреждения, если Ваш код ожидает, что это будет чем-то другим, чем undef. (особенно, при попытке использовать ту переменную в качестве ссылки на объект). Вы могли поместить что-то в свой код, такой как:
use Carp qw();
[....]
Carp::confess '$variableName is undef' unless defined $variableName;
[....]
Включайте это:
use Carp ();
Затем включают один из этих строк во главе Вашего исходного файла:
local $SIG{__WARN__} = \&Carp::confess;
local $SIG{__WARN__} = \&Carp::cluck;
confess
строка даст отслеживание стека, и cluck
, строка является намного более краткой.
Один способ сделать те предупреждения фатальными состоит в том, чтобы установить обработчик сигналов для ПРЕДУПРЕДИТЬ виртуального сигнала:
$SIG{__WARN__} = sub { die "Undef value: @_" if $_[0] =~ /undefined/ };