Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

129
Views
Convert array of strings to hashmap with count javascript

Is there a better way to convert

["88 99", "20 99", "12 12"]

to a hashmap in the form

{"88": 1, "99": 2, "20": 1, "12": 1}

Using map or reduce?

Where in this case, a string with duplicate numbers only gets increases it's count by 1.

Currently I'm converting the above array into a 2d array using .split(' ') and iterating over that 2d array in another for loop as so:

var counts = {}
    for (let i = 0; i < logs.length; i++){
      let ack = logs[i].split(' ');
      if(ack[0]==ack[1]){
        counts[ack[0]] = counts[ack[0]] ? counts[ack[0]] + 1 : 1; 
      }
      else{
      for(let j= 0; j < 2; j++){
         counts[ack[j]] = counts[ack[j]] ? counts[ack[j]] + 1 : 1;  
                               }
          }
      
     }

about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

First I group by numbers, summing the appearances of each. This is using the reduce part. That's it. I used adaption of method by https://stackoverflow.com/a/62031473/3807365

var arr = ["88 99", "20 99", "12 12"]

var step1 = arr.reduce(function(agg, pair) {
  pair.split(" ").forEach(function(item) {
    agg[item] = (agg[item] || 0) + 1
  })
  return agg;
}, {})

console.log(step1)

about 4 years ago · Santiago Gelvez Report

0

Yes. I'm assuming you want to write in a functional style, so I'm not worrying about efficiency, etc.

You can collapse this into a hairy one-liner but I wrote the intermediate steps and output them for illustration.

const input = ["88 99", "20 99", "12 12"];

const split = input.map( (string) => string.split(" ") );
console.log("split: " + JSON.stringify(split));

const flattened = split.reduce( (acc,array) => acc = acc.concat(array), []);
console.log("flattened: " + JSON.stringify(flattened));

const output = flattened.reduce( (byKey, item) => {
    if (!byKey[item]) byKey[item] = 0;
    byKey[item]++;
    return byKey;
}, {});
console.log(JSON.stringify(output))

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!