I have an array of strings pointAddress
and I want to check each entry if it contains strings from another array, validPointTypes
.
def pointAddress = ['bacnet://240101/AV:3', 'bacnet://240101/BV:9', 'bacnet://240101/AV:7', 'bacnet://240101/BALM:15'] def validPointTypes = ['AV', 'AI', 'AO', 'ANI', 'ANO', 'BV', 'BI', 'BO', 'BNI', 'BNO']
Right now I just have a giant if
statement.
j = pointName.size() for(j=j-1; j>=0;j--) { if(pointAddress[j]) { if(pointAddress[j].contains('AV') || pointAddress[j].contains('AI') || pointAddress[j].contains('AO') || pointAddress[j].contains('ANI') || pointAddress[j].contains('ANO') || pointAddress[j].contains('BV') || pointAddress[j].contains('BI') || pointAddress[j].contains('BO') || pointAddress[j].contains('BNI') || pointAddress[j].contains('BNO')) { } else { pointAddress.remove(j) pointName.remove(j) m++ } } else { pointName.remove(j) m++ } }
There's gotta be a better way, right?
You can use the includes() method in JavaScript to check if an item exists in an array. You can also use it to check if a substring exists within a string. It returns true if the item is found in the array/string and false if the item doesn't exist.
Groovy - Lists contains() Returns true if this List contains the specified value.
The includes() method returns true if a string contains a specified string. Otherwise it returns false .
def valid = pointAddress.findAll { a -> validPointTypes.any { a.contains(it) } }
Should do it
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With