SearchForKnowledge
SearchForKnowledge

Reputation: 3751

How to count the items in array like the developer console

Script:

vL1 = ["AB", "AB", "AB", "AB", "AB", "CS", "CS", "CS", "ND", "ND"];
vL2 = ["1",  "1",  "1",  "2",  "3",  "1",  "1",  "2",  "1",  "1"];

for(var i = 0; i < vL1.length; i++){
    thing = vL1[i] + " " + vL2[i];
    console.log(thing);
}

When I check the developer console, I see the following:

(3) AB 1
    AB 2
    AB 3
(2) CS 1
    CS 2
(2) ND 1

How can I modify the script so I can get the number of times AB with 1 appeared or CS with 1 appeared in my code to be used in other functions?

I just want to know the count for each vL2 that is represented in vL1. It is important to associate vL1 because that will let me identify the vL2, since it is not unique.

Upvotes: 0

Views: 59

Answers (3)

Redu
Redu

Reputation: 26161

You might also do as follows;

var vL1 = ["AB", "AB", "AB", "AB", "AB", "CS", "CS", "CS", "ND", "ND"],
    vL2 = ["1",  "1",  "1",  "2",  "3",  "1",  "1",  "2",  "1",  "1"],
 result = vL1.reduce((p,c,i) => p[c] ? (p[c][vL2[i]] = p[c][vL2[i]] ? ++p[c][vL2[i]]
                                                                    : 1, p)
                                     : (p[c] = {[vL2[i]]: 1}, p), {});
console.log(result);

Upvotes: 2

Sᴀᴍ Onᴇᴌᴀ
Sᴀᴍ Onᴇᴌᴀ

Reputation: 8297

You can store the counts in an object. Also, utilizing Array.prototype.reduce can make it simpler to work with the indexes (e.g. you don't have to handle incrementing the index manually, etc.):

    vL1 = ["AB", "AB", "AB", "AB", "AB", "CS", "CS", "CS", "ND", "ND"];
vL2 = ["1",  "1",  "1",  "2",  "3",  "1",  "1",  "2",  "1",  "1"];

var counts = vL1.reduce(function(counts,vL1Element,index) {
  //initialize this index if it isn't set
  if(counts[vL1Element] == undefined) {
    counts[vL1Element] = {};
  }
  //set this count to 0 if it hasn't been set yet
  if (counts[vL1Element][vL2[index]] == undefined) {
    counts[vL1Element][vL2[index]] = 0;
  }
    counts[vL1Element][vL2[index]]++;
  return counts;
},{});
console.log(counts);

Upvotes: 1

Jonas Wilms
Jonas Wilms

Reputation: 138235

var obj={};
function log(a){
 if(obj[a]){
  obj[a]++;
 }else{
  obj[a]=0;
 }
 }

And then do:

log(thing);

Inside of your for loop, and than:

console.log(obj);

Obj now contains: AB1:3; ....

Upvotes: 1

Related Questions