Forum Discussion
The expression language is a subset of JavaScript, so you can usually start by looking for JavaScript-based solutions.
In this case, take a look at this post:
The first answer has the simplest solution. The only change you have to make is to convert the callback function to use the arrow-function syntax, like so:
$arr.filter((item, pos, a) => a.indexOf(item) == pos)
Hi, I have an complex JSON array and I have to remove the duplicates based on a field. For Ex:
[ {PartnerID:1127839, ProductNum:a, …} ,
{PartnerID:1127839, ProductNum:a,…} ,
{PartnerID:1127839, ProductNum:b,…} ,
{PartnerID:1127839, ProductNum:c,…} ],
How can I remove the duplicate array elements based on the ProductNum Field to produce the below JSON
[ {PartnerID:1127839, ProductNum:a, …} ,
{PartnerID:1127839, ProductNum:b,…} ,
{PartnerID:1127839, ProductNum:c,…} ]
I have tried the above logic and it didnt work, as other fields in this json structure.
- tstack9 years agoFormer Employee
Same idea, except you’d want to use the ‘findIndex()’ method with a custom predicate instead of the ‘indexOf()’ method, like so:
$arr.filter((item, pos, a) => a.findIndex(elem => item.ProductNum == elem.ProductNum) == pos)
So, the ‘findIndex()’ method will walk through the array and evaluate the predicate function (elem => item.ProductNum == elem.ProductNum) on every element in the array. If a match is found, the index is returned and, if it’s the same index as the current element being examined in the filter, then we add the element to output list.
- Tanmay_Sarkar5 years agoNew Contributor III
Hello,
Is there a way we can totally remove the duplicates values from the array?
For instance if my array looks like [1,2,3,1,3,4,5], I want them separated out with each other like [2,4,5] and [1,1,3,3]