Получить номер каждого элемента в массиве с помощью карты - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь узнать, сколько раз каждый строковый элемент встречается в массиве, и распечатать его с помощью карты. Я в основном читаю данные из функций firebase, но сейчас я использую массив для проверки кода, чтобы получить вхождения каждого элемента. Я попробовал следующий код из здесь , но он не работает, и я не уверен, почему:

<script>
var appVersion= ["5012", "5021", "5012", "5011", "5012", "5021"];

var count = new Map();

appVersion.forEach(version=> count.set(count.get(version) + 1));

function show(versions) {
         document.write(versions);
         document.write("<br>");
      }
    count.forEach(show);
</script>

Любая помощь или совет будут очень признательны.

Ответы [ 4 ]

1 голос
/ 12 июля 2020

, вероятно, вы захотите это

, как описано в комментариях, если вы хотите, чтобы конечный объект был в этом формате: { '5011': 1, '5012': 3, '5021': 2 } вы можете использовать сокращение

var appVersion= ["5012", "5021", "5012", "5011", "5012", "5021"];


map=new Map
appVersion.forEach(o=>{
   count=map.get(o)||0
    map.set(o,count+1)
})
r=[...map].reduce((acc,curr)=>{
  if (acc.length==0) {acc.push({[curr[0]]:curr[1]})}
  else  {acc[0][curr[0]]=curr[1]}
 return acc
},[])

console.log(r)
1 голос
/ 12 июля 2020

Может это поможет

var appVersion= ["5012", "5021", "5012", "5011", "5012", "5021"];

let counter = {}
for (version of appVersion){
    counter[version] = 1 + (counter[version] || 0)
}

console.log(counter);
0 голосов
/ 12 июля 2020

См. Ниже

var appVersion= ["5012", "5021", "5012", "5011", "5012", "5021"];

var count = new Map();

appVersion.map( (version) => count.get( version) != undefined ? count.set( version, count.get( version) + 1 ) : count.set( version, 1 ) );

console.log( [...count].sort() );
0 голосов
/ 12 июля 2020

Использование карты:

let contador = {};
appVersion.map(x => contador[x] = 1 + (contador[x] || 0));
console.log(contador);
...