Forum Discussion

alex_panganiban's avatar
alex_panganiban
Contributor
4 years ago
Solved

Counting Instances in Array Object and Removing Duplicates

As I process an array, I want to see if I have any duplicate names in the array that I am processing. If I encounter a duplicate name, I only want to keep the one where the series contains “Trekker.” How can I do this?

For example, given the shows array below. My goal is to remove the first instance of Spock and keep the instance that contains the word, Trekker.

shows: [
{ name: ‘James T. Kirk’, series: ‘Star Trek’ },
{ name: ‘Spock’, series: ‘Star Trek’, ‘Star Trek: The Next Generation’ },
{ name: ‘Jean-Luc Picard’, series: ‘Star Trek: The Next Generation’ },
{ name: ‘Worf’, series: ‘Star Trek: The Next Generation’ },
{ name: ‘Spock’, series: ‘Star Trek’, ‘Star Trekker’ }
]

I’ve been able to get rid of duplicate names using the following filter method, however, due to the positioning index, it always gets rid of the one I want to keep.

$shows.filter((show, pos, a) => a.findIndex(item => item.name == a[pos].name) == pos)

In this example, I got all 5 instances of the array back.

$shows.filter((show, pos, a) => a.findIndex(item => item.name == a[pos].name) != pos
&& a[pos].series.contains(“Trekker”)
|| a.findIndex(item => item.name == a[pos].name) == pos)

I thought if I could get the count of the current name, then I could leverage the count value to incorporate in the filters above, however, I can’t figure out how to do that.

$shows.filter(show => show.name == “Spock”).length

$shows.filter((show, pos, a) => a.findIndex(item => item.name == a[pos].name) != pos
&& a[pos].series.contains(“Trekker”)
|| a.findIndex(item => item.name == a[pos].name) == pos && COUNT == 1)

I also tried using the array.prototype.findLastIndex, but either SnapLogic didn’t like it or maybe it’s a Java/Javascript version issue.

Please help. My Javascript skills, especially when using callbacks, sucks. And thank you.

  • Hi,
    Given that I can’t see the state of the ‘Pass through’ property in the Mapper3 Snap, I’d try and unselect the checkbox if it is selected. That will ensure that if there are any other fields received on the Mapper Snap’s input, they won’t be forwarded to the output.

    BR,
    Dimitri

3 Replies

    • venkat475's avatar
      venkat475
      New Contributor II

      Hi rdill,

      We don't have the copybook parser snap.so that's why I am trying to read this cobol file using this python script and passing the output as Json.

       

      Sp could you please help me how to execute this python script in script snap 

      • venkat475's avatar
        venkat475
        New Contributor II

        this is my copybook layout and sample file how to convert this into csv using the python script