Métodos Utilitários Comuns para Manipulação de Dados

Ordenação de Arrays

const numeros = [0,1,2,3,4,5,6];

// Ordena os dados em ordem decrescente com base em uma propriedade específica
const ordenado = JSON.parse(JSON.stringify(numeros)).sort(this.compararDecrescente(propriedade));

// Função de comparação para ordenação descendente
compararDecrescente(nomePropriedade) {
  return function (objA, objB) {
    const valorA = objA[nomePropriedade];
    const valorB = objB[nomePropriedade];
    return valorB - valorA;
  };
}

Verificação Condicional em Arrrays

// some(): retorna true se algum elemento atender à condição
// every(): retorna true apenas se todos os elementos atenderem à condição

const valores = [0,10,12,13,14,15];
valores.some(item => item > 10);  // true
valores.every(item => item > 10); // false

Cálculo de Diferança Temporal

function calcularDiferenca(inicio, fim) {
  const dataInicio = new Date(inicio);
  const dataFim = new Date(fim);
  const diffMs = dataFim.getTime() - dataInicio.getTime();
  
  const dias = Math.floor(diffMs / (24 * 3600 * 1000));
  const restoHoras = diffMs % (24 * 3600 * 1000);
  const horas = Math.floor(restoHoras / (3600 * 1000));
  
  const restoMinutos = restoHoras % (3600 * 1000);
  const minutos = Math.floor(restoMinutos / (60 * 1000));
  
  const restoSegundos = restoMinutos % (60 * 1000);
  const segundos = Math.round(restoSegundos / 1000);
  
  return { dias, horas, minutos, segundos };
}

Data Anterior ao Dia Atual

function obterDataAnterior(diasAntes) {
  let dataRef = new Date();
  let ano = dataRef.getFullYear();
  let mes = dataRef.getMonth() + 1;
  let dia = dataRef.getDate();
  
  if(dia <= diasAntes) {
    if(mes > 1) {
      mes = mes - 1;
    } else {
      ano = ano - 1;
      mes = 12;
    }
  }
  
  dataRef.setDate(dataRef.getDate() - diasAntes);
  ano = dataRef.getFullYear();
  mes = dataRef.getMonth() + 1;
  dia = dataRef.getDate();
  
  const formatoMes = mes < 10 ? '0' + mes : mes;
  const formatoDia = dia < 10 ? '0' + dia : dia;
  
  return `${ano}-${formatoMes}-${formatoDia}`;
}

Truncagem de Texto com Reticências

function truncarTexto(texto, limite = 5) {
  if (!texto) return '';
  
  if (texto.length > limite) {
    return texto.substring(0, limite) + '...';
  }
  
  return texto;
}

Formatação Numérica

function formatarNumero(valor) {
  if (valor !== undefined) {
    return parseFloat(valor)
      .toFixed(0)
      .replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
  }
  
  return '';
}

Pesquisa em Estruturas Hierárquicas

this.filtrarArvore(termoBusca, dadosArvore);

filtrarArvore(busca, lista) {
  const resultado = [];
  
  lista.forEach(item => {
    if (item.label.includes(busca)) {
      resultado.push(item);
    } else {
      if (item.children && item.children.length > 0) {
        const filhosFiltrados = this.filtrarArvore(busca, item.children);
        
        if (filhosFiltrados && filhosFiltrados.length > 0) {
          const novoItem = {
            ...item,
            children: filhosFiltrados
          };
          resultado.push(novoItem);
        }
      }
    }
  });
  
  return resultado;
}

Tags: javascript array-manipulation date-formatting string-truncation tree-search

Publicado em 10-4 20:25