KNOWLEDGE BASE
Tech Tip: Utility Method Utilizing Collection .some() Function
PRODUCT: 4D | VERSION: 19 R 6 | PLATFORM: Mac & Win
Published On: February 13, 2023

The methods below use the .some()function and Formula callback to test collections for a value that meet a specific condition.
.some() function returns true if at least one element in the collection successfully passes the test provided in the formula.

By default .some() will test the whole collection; however, you can pass the index of an element as a parameter, to specify which index you’d like to start from.

The Test example below illustrates how to test the collection, starting from index 1

The Utility Method - someUtility()accepts two parameters: a collection, and a formula object.

 #DECLARE(\$collection : Collection; \$formula : Object)->\$bool : BooleanIf (Count parameters=2)   \$bool:=\$collection.some(\$formula)End if

The Utility Method - someUtilityWithIndex() accepts three parameters: the collection, formula object, and integer for the starting index.

 #DECLARE(\$collection : Collection; \$formula : Object; \$index : Integer)->\$bool : BooleanIf (Count parameters=3)   \$bool:=\$collection.some(\$index; \$formula)End if

——Test——
The following code checks if there is a value greater than 0 in a given collection.

 var \$collection1; \$collection2 : Collectionvar \$test1; \$test2; \$test3; \$test4 : Booleanvar \$formula : Object\$formula:=Formula(\$1.value>0)\$collection1:=New collection(-6; -1; -10; -90; -3; -2)\$test1:=someUtility(\$collection1; \$formula) // false\$collection1.push(1)\$test1:=someUtility(\$collection1; \$formula) //true\$collection2:=New collection(10; -27; -2; 0; -1; -6; -2)\$test2:=someUtility(\$collection2; \$formula) // true\$test2:=someUtilityWithIndex(\$collection2; \$formula; 1) // false\$test3:=\$collection2.some(1; \$formula) // false

Note: These tests with .some() can be performed directly on the collection with only one line of code, see \$test3