The lodash _.some collection method can be used to test to see if just one element of an array, or key value pair of an object in general meets a given condition. In the event that just one or more puplic keys of the collection is true then the return value for the lodash some method will in turn also be true. There is another collection method known as _.every that works in a similar way to that of the _.some method but will only return true when all elements of a collection meet a given condition rather than just one.
1 - lodash some basic example
Source is on github
I have the source code examples for this post in my test lodash repository on Github which is the standard location in which I will be placing my source code examples on my various other posts on lodash now.
1.1 - Using lodash some with an array
The lodash some method will work just fine with an array, for example say I have two arrays and I want to find out which one of the two has at least one if not more numbers in it. I can come up with a tester function that uses the type of operator to find the type of a current element in an array and then compare that to the string ‘number’. I then just need to call the lodash some method passing the array that i want to test as the first argument, and then the tester function as the second argument.
1.2 - The lodash some method can be used with any object
In this example I have a test type helper function that will create and return a method that I can then use with the lodash some method, or many other methods like it. Both this test type method as well as the lodash some method are examples of what is called a higher order function. The lodash some method is a higher order function just because it takes a function as an argument, but this test type function is one because it returns a function. A higher order function takes a function as an argument, returns a function as a return value, or does both of these things.
1.3 - Lodash some compared to lodash every method
Another closely related method to the lodash some method would be the lodash every method. Where the lodash some method will return true if just one or more elements in a collection are true, the every method will only return true if all the elements in the collection meet the given condition. In this example I have a test type method that will now return true if a current element is of one of the types in a given array of types. I then have an object that contains two numbers, and one string. So then if I use the lodash some method with this object and create a test function with the test type helper that will work with numbers, strings, or numbers and strings the result will be true for the object. However in order to get a true result when using the every method I will need to make it so that the test is for both numbers an strings.
2.1 - Just use a loop
So it is not to hard to just use a while loop for example to loop over the contents of an array and check to see if one element in the array meets a certain condition of course.
2.2 - Writing a some method
It is not to hard to write a some method of my own. The Object.keys method can be used to get all publc keys of an Object in general. This can then be used as a way to loop over all they keys and call a given test function that will return true if an element meets the desired condition. Such a method will work just fine with most Arrays and Object collections in general.
2.3 - Native Array.some and an Arrays
So if all clients that are of concern support it, there is also a native option for this sort of thing in the Array prototype.
One draw back might be that it is an array prototype method and not a collection method like in lodash. No problem thous as this is easily fixed with just the use of one more additional native method which would be the Object.values static Object method.
2.4 - Native Array.some and Objects in general
So the native Array.some method works okay on all clients concerned and you want to just go ahead and use that as a way to preform these kinds of tests. There is just one little problem and that is that it is an array prototype method rather than a collection method like in lodash. So when you want to use it with objects in general, you can not just go ahead and do so with just the native array some method.
So there is then a need to make a stand alone some method that is part of you r own framework for you pro9ject just like in lodash once again. If you do not just want to use lodash and move on with it then it is not to hard to just make a native equivalent with just the native array some method and then the object.values static Object method.
3 - Conclusion
The lodash some method as well as the native equivalent, or any other non lodash user space solution for what is often refer to as some, is just a way to check if all elements in an array meet a given condition. Preforming such a task really just involves just looping over all elements of an array, or collection, and preform a test for each element. If just one test results in a true result, then the process can be stopped and a true value for the some operation can be observed.