Este é o código que escrevi quando precisei ordenar algo como vídeos do Twitter pela resolução.
Ordenar por resolução (largura × altura) em ordem decrescente
interface MediaFile { url: string; height: number; width: number}
function sortMediaByQuality(files: Array<MediaFile>): Array<MediaFile> { return files.toSorted((a, b) => { const resolutionA = a.width * a.height; const resolutionB = b.width * b.height; return resolutionB - resolutionA });}Pontos principais
toSorted: retorna um novo array sem alterar o original- Cálculo da resolução: calcula a resolução com
width × height - Ordenação decrescente: coloca primeiro os arquivos com maior resolução
Exemplo de uso
const videos: MediaFile[] = [ { url: "video1.mp4", width: 1280, height: 720 }, // 921,600 { url: "video2.mp4", width: 1920, height: 1080 }, // 2,073,600 { url: "video3.mp4", width: 640, height: 480 }, // 307,200];
const sorted = sortMediaByQuality(videos);// video2.mp4 (1920x1080) vem primeiroResumo
Combinar cálculo de resolução com ordenação facilita priorizar arquivos de mídia com mais qualidade.
Isso é útil ao escolher a melhor opção entre várias variantes de vídeo ou imagem, como nas mídias do Twitter.
hsb.horse