He creado un par de matrices. arrLocations contiene una serie de nombres de países de 2 dígitos, arrResults cuenta cuántas veces ocurre cada uno y contiene el nombre del país con su conteo como se ve aquí:
[ FR: 40, US: 1511, AU: 82, CN: 151, IE: 170, SG: 108, GB: 66, KR: 52, JP: 137, IN: 45, BR: 68, SE: 39, ZA: 19, NL: 19, BH: 19, LU: 3, CA: 41, DE: 79, ID: 1, HK: 1 ]Mi intención es ordenar esta matriz por ocurrencia ascendente, quiero esto:
[ ID: 1, HK: 1, LU: 3, BH: 19, NL: 19, ZA: 19, ....and so on........ ]Sin embargo, no importa de qué manera implemente sort, no hace absolutamente nada. Incluso hice una clasificación de prueba en una matriz tonta y pude clasificarla bien, pero no puedo clasificar esta matriz.
Esto es lo que tengo hasta ahora:
var geoip = require('geoip-lite') const fs = require('fs') const { Console } = require('console') let data = fs.readFileSync('./ip_new.txt') let iplocation = "" let arrLocations = [] let arrResults = [] let arrIP = data.toString().split("\r\n") for(let item of arrIP){ iplocation = geoip.lookup(item) arrLocations.push(iplocation.country) } for(let item of arrLocations){ if (item in arrResults){ arrResults[item]++ } else{ arrResults[item]=1 } } arrResults.sort() console.log(arrResults)Bien, antes que nada asumo esto
[ FR: 40, US: 1511, AU: 82, CN: 151, IE: 170, SG: 108, GB: 66, KR: 52, JP: 137, IN: 45, BR: 68, SE: 39, ZA: 19, NL: 19, BH: 19, LU: 3, CA: 41, DE: 79, ID: 1, HK: 1 ]es en realidad esto
[ { FR: 40 }, { US: 1511 }, { AU: 82 }, { CN: 151 }, { IE: 170 }, { SG: 108 }, { GB: 66 }, { KR: 52 }, { JP: 137 }, { IN: 45 }, { BR: 68 }, { SE: 39 }, { ZA: 19 }, { NL: 19 }, { BH: 19 }, { LU: 3 }, { CA: 41 }, { DE: 79 }, { ID: 1 }, { HK: 1 } ]Si esto es cierto, entonces el método de clasificación no funcionará por sí solo. Sin embargo, lo siguiente servirá:
const arrResults = [ { FR: 40 }, { US: 1511 }, { AU: 82 }, { CN: 151 }, { IE: 170 }, { SG: 108 }, { GB: 66 }, { KR: 52 }, { JP: 137 }, { IN: 45 }, { BR: 68 }, { SE: 39 }, { ZA: 19 }, { NL: 19 }, { BH: 19 }, { LU: 3 }, { CA: 41 }, { DE: 79 }, { ID: 1 }, { HK: 1 } ]; arrResults.sort((a, b) => { const countryCodeA = Object.keys(a)[0]; const countryCodeB = Object.keys(b)[0]; return a[countryCodeA] - b[countryCodeB]; });