Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

81
Visualizações
List count array by name attribute dynamics information

I need to show an object with the existing attribute list and showing a number of how many times it appears:

Payload:

[
    [
        "valor"
    ],
    [
        "tipo de entrada",
        "data entrada",
        "valor"
    ],
    [
        "tipo de entrada",
        "data entrada",
        "valor"
    ],
    [
        "tipo de entrada"
    ],
    [
        "tipo de entrada"
    ],
    [
        "tipo de entrada"
    ],
    [
        "valor"
    ],
    [
        "valor"
    ],
    [
        "valor"
    ],
    [
        "valor"
    ],
    [
        "tipo de entrada",
        "data entrada",
        "valor"
    ]
]

Result:

{
    valor: 16,
    tipo_entrada: 9,
    dqta_entrada: 6
}

being that list of attributes dynamically, it can contain other values ​​(value, name, age ...)

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

You can flatten your array using array#flat() and then using array#reduce count the frequency of each word.

const arr = [ [ "valor" ], [ "tipo de entrada", "data entrada", "valor" ], [ "tipo de entrada", "data entrada", "valor" ], [ "tipo de entrada" ], [ "tipo de entrada" ], [ "tipo de entrada" ], [ "valor" ], [ "valor" ], [ "valor" ], [ "valor" ], [ "tipo de entrada", "data entrada", "valor" ] ],
      result = arr.flat().reduce((r, word) => {
        r[word] = (r[word] ?? 0) + 1;
        return r;
      },{});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Here's a one-liner :

var mainData = [ [ "valor" ], [ "tipo de entrada", "data entrada", "valor" ], [ "tipo de entrada", "data entrada", "valor" ], [ "tipo de entrada" ], [ "tipo de entrada" ], [ "tipo de entrada" ], [ "valor" ], [ "valor" ], [ "valor" ], [ "valor" ], [ "tipo de entrada", "data entrada", "valor" ] ]

var resultObj = {};
mainData.map(data => data.forEach(subData => { resultObj[subData] = (Object.keys(resultObj).indexOf(subData) == -1 ? 1 : resultObj[subData] + 1) }))
console.log(resultObj)

about 4 years ago · Juan Pablo Isaza Relatório

0

You can use flat and play around with it.

This code defines and explain a way of resolving your problem:

const result = {};
const initialArray = [['tomato'], ['ketchup', 'potato']];
const strings = initialArray.flat(); // ['tomato', 'ketchup', 'potato']

for (const string of strings) {
  // string is 'tomato' for example
  // result[string] would then be result[tomato]

  if (result[string]) {
    result[string] += 1; // result.tomato already exists? Add 1 to it
  } else {
    result[string] = 1; // if it does not exists, create it with value 1
  }
}
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda