2

I have an array of data => this.allNodeSets. To this array, i find the duplicates. And now i want to find the count of duplicates. The only way to find the duplicate count is say => itemCount.ball

Dummy code -

var randomArray = ["ball", "ball", "tree", "ball", "tree", "bus", "car"];
var itemCount = {};

randomArray.forEach(function(value){
    if(value in itemCount) itemCount[value] = itemCount[value] + 1;
    else itemCount[value] = 1;
}); 

To find the count - do =>

 itemCount.ball 

I am finding difficulty in finding this individual count like done above. My Code -

app.component.ts - Angular2+

callFunctionSingleSelectedResult(){

allNodeSets = [
 ["claimIntimationRequestBody", "claimIntimationRequestHeader"],
 ["claimIntimationRequestBody", "claimIntimationRequestHeader"],
 ["claimIntimationRequestBody", "claimIntimationRequestBody"],
["claimIntimationRequestBody", "claimIntimationRequestHeader"],
 ["claimIntimationRequestBody", "claimIntimationResponseBody"],
 ["claimIntimationRequestHeader", "claimIntimationRequestBody"],
 ["claimIntimationRequestHeader", "claimIntimationRequestHeader"],
 ["claimIntimationRequestHeader", "claimIntimationResponseBody"],

 ["claimIntimationRequestBody", "claimIntimationRequestHeader"],

 ["claimIntimationRequestBody", "claimIntimationResponseBody"],
 ["claimIntimationRequestHeader", "claimIntimationResponseBody"],
]


       var duplicateResult = this.findDuplicates(this.allNodeSets);

       console.log("inside duplicates, result= ", duplicateResult);



//------------[1] count duplicates


              var itemCount = {};

              duplicateResult.forEach(function (value) {
                if (value in itemCount)
                  itemCount[value] = itemCount[value] + 1;
                else itemCount[value] = 1;


              });

              console.log("duplicateResult, forEach = count = ", 
           itemCount)

              for (var i = 0; i < duplicateResult.length; i++) {

                console.log(" individual count = ", itemCount)
              }

}


 // finding Duplicates

  findDuplicates(arr) {
    var len = arr.length,
      out = [],
      counts = {};

    for (var i = 0; i < len; i++) {
      var item = arr[i];
      counts[item] = counts[item] >= 1 ? counts[item] + 1 : 1;
      if (counts[item] > 1) {
        out.push(item);
      }
    }

    return out;
  }

  // Function duplicate ends

Output -

 duplicateResult = 
    [ 
    ["claimIntimationRequestBody","claimIntimationRequestHeader"],
    ["claimIntimationRequestBody", "claimIntimationRequestHeader"], 
    ["claimIntimationRequestBody","claimIntimationRequestHeader"] ,
    ["claimIntimationRequestBody","claimIntimationResponseBody"],
    ["claimIntimationRequestHeader", "claimIntimationResponseBody"] , 
    ["claimIntimationRequestHeader" "claimIntimationResponseBody"] 
    ]



    duplicate count, counter = {["claimIntimationRequestBody","claimIntimationRequestHeader"]: 3, 

["claimIntimationRequestBody","claimIntimationRequestBody"]: 1, 

["claimIntimationRequestBody","claimIntimationResponseBody"]: 1}

I searched the entire web but there is no other working way where i am able to determine a code that gives the count in some other way. Please help in determining a way to fetch the node count or maybe over here is there a way to fetch the node count. I am unable to do so.

If i do this -

 for (var i = 0; i < duplicateResult.length; i++) {

                console.log(" individual count = ", itemCount.duplicateResult)
              }

I get error -

Property 'duplicateResult' does not exist on type '{}'.

Reference -

How to check if the elements in an array are repeated?

Techdive
  • 997
  • 3
  • 24
  • 49

2 Answers2

0

var randomArray = ["ball", "ball", "tree", "ball", "tree", "bus", "car"];
var counts = {};
randomArray.forEach(function(x) { counts[x] = (counts[x] || 0)+1; });
console.log(counts)

this is a working example ,I hope this will help

siddharth shah
  • 1,139
  • 1
  • 9
  • 17
0

 var input= [ 
            ["claimIntimationRequestBody","claimIntimationRequestHeader"],
            ["claimIntimationRequestBody", "claimIntimationRequestHeader"], 
            ["claimIntimationRequestBody","claimIntimationRequestHeader"] ,
            ["claimIntimationRequestBody","claimIntimationResponseBody"],
            ["claimIntimationRequestHeader", "claimIntimationResponseBody"] , 
            ["claimIntimationRequestHeader", "claimIntimationResponseBody"] 
        ];
        
        var output = {};
        
        input.forEach(item => {
            // key is combination of all values of subarray  
            let key = item.join("_");
            if(!output[key]) output[key] = 0;
            output[key] +=1;
          }
        )
        console.log(output)
      
Mohammed Ashfaq
  • 3,353
  • 2
  • 15
  • 22