Это метод, который сам Google использует, по крайней мере, в одном примере:
var markers = [];
// Clear out the old markers.
markers.forEach(function(marker) {
marker.setMap(null);
});
markers = [];
Проверьте образец Google для полного примера кода:
https: // разработчики. google.com/maps/documentation/javascript/examples/places-searchbox
Эффективный подход заключается в использовании ассоциативных массивов bash 4.0:
#!/usr/bin/env bash
case $BASH_VERSION in ''|[123].*) echo "ERROR: Requires bash 4.0+" >&2; exit 1;; esac
declare -A input_fields_list=( [one]=1 [two]=1 [three]=1 [four]=1 [five]=1 )
declare -A req_fields_list=( [one]=1 [six]=1 [seven]=1 [eight]=1 )
declare -A non_input_fields_list=( [two]=1 [three]=1 [seven]=1 [eight]=1 [nine]=1 )
for xfr in "${!input_fields_list[@]}"; do
[[ ${req_fields_list[$xfr]} ]] && continue
[[ ${non_input_fields_list[$xfr]} ]] && continue
echo "$xfr not found" >&2
exit 1
done
echo "All input fields are valid" >&2
exit 0
Как вы можете видеть на https://ideone.com/IhmVKy , это правильно завершается с five not found
.
Например, вы должны выполнить итерацию следующим образом:
#!/bin/bash
INPUT_FIELDS_LIST=( one two three four five)
REQ_FIELDS_LIST=( one six seven eight )
NON_INPUT_FIELDS_LIST=( two three seven eight nine )
for ifl in "${INPUT_FIELDS_LIST[@]}"
do
for rfl in "${REQ_FIELDS_LIST[@]}"
do
myvar=0
if [[ $ifl == "$rfl" ]]
then myvar=1; break
else continue
fi
done
for nifl in "${NON_INPUT_FIELDS_LIST[@]}"
do
myvar2=0
if [[ $ifl == "$nifl" ]]
then myvar2=1; break
else continue
fi
done
if [[ $myvar == 1 ]] || [[ $myvar2 == 1 ]]
then continue
else echo "$ifl"
fi
done
Выполнить итерацию по вторичным циклам вручную, а затем пометить их как недействительные.
Оператор if в конце проверяет, было ли сопоставлено какое-либо значение, если оно есть, оно переходит к следующей первичной итерации.
Выход:
four
five
Вы можете проверить, находится ли элемент в массиве с чем-то вроде этого, без циклов и не подвержен пробелам в элементах
#! /bin/bash
function elem_in_array() {
local e="$1"
shift
local a=("$@")
[[ $(printf '\x01%s\x01' "${a[@]}") =~ $(printf '\x01%s\x01' "$e") ]]
}
a1=(A B "C D" E F)
elem_in_array "A" "${a1[@]}" && echo Y || echo N
elem_in_array "B" "${a1[@]}" && echo Y || echo N
elem_in_array "C D" "${a1[@]}" && echo Y || echo N
elem_in_array "AB" "${a1[@]}" && echo Y || echo N