How to filter out Utxo that has specified DatumValue/ DatumHash inside endpoint?

In the off-chain code, all demo I read are consume all Utxos (get by utxos <- utxoAt scrAddress) that locked to script address.
But I just want to pick out only one Utxo who’s Datum match given value that pass in by redeemer, suppose there are hundreds or thousand of Utxo locked on the script address.
How to filt it using plutus/haskell? I don’t know which function to used.
Can your experts show a code snippet?