Wie kann ich die Objekte in einem Array von key.coins Werten sortieren? von JSON

stimmen
-3

I'mm macht discord.js bietet, und ich will Befehl machen, die mit Top-Balance 5 Benutzer schreiben. Wenn ich runned diesen Code

let coins = require(./coins.json);
for (var key in coins) {
  if (coins.hasOwnProperty(key)) {
  console.log(key + :  + coins[key].coins);
  }
}

Ich habe alle Fäden wieder ...

298462251453775873: 2090

208120625947082752: 210

461643208422588446: 370

290099182310785025: 10

468737161563209738: 420

381182620513468417: 40

408908116101431298: 180...

Das heißt also: User: coins. Wie kann ich diese Werte sortieren , ohne zu verlieren , welcher Benutzer es besitzt?

Veröffentlicht am 27/11/2018 um 17:53
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

Sie können verwendet werden Object.entries, Array.mapwie unten für Objekte zu erreichen Sortier

let coins = {
    '298462251453775873': {coins: 2090}
  , '208120625947082752': {coins: 210}
  , '461643208422588446': {coins: 370}
  , '290099182310785025': {coins: 10}
  , '468737161563209738': {coins: 420}
  , '381182620513468417': {coins: 40}
  , '408908116101431298': {coins: 180}
}

coins = Object.assign(...Object.entries(coins)
                               .sort(([,a],[,b]) => a.coins - b.coins)
                               .map(([k,v]) => ({[k]: v})))

for (var key in coins) {
  if (coins.hasOwnProperty(key)) {
  console.log(key + ": " + coins[key].coins);
  }
}

//console.log(coins)

Beantwortet am 27/11/2018 um 18:02
quelle vom benutzer

stimmen
0

Mit Object.keys()und array.slice()können Sie erreichen , was Sie brauchen.

const coins = {
  "298462251453775873": { coins: 2090 },
  "208120625947082752": { coins: 210 },
  "461643208422588446": { coins: 370 },
  "290099182310785025": { coins: 10 },
  "468737161563209738": { coins: 420 },
  "381182620513468417": { coins: 40 },
  "408908116101431298": { coins: 180 }
}

const top5Coins = Object.keys(coins).sort(function(a,b){return coins[a].coins-coins[b].coins}).slice(0,5);

const mappedTop5 = top5Coins.map(c => `${c}:${coins[c].coins}`);

console.log(mappedTop5.join("\n"));

Beantwortet am 27/11/2018 um 18:01
quelle vom benutzer

stimmen
0

So wandelt es in ein Array mit Object.keys oder Object.entries und sortieren, dass.

const users = {
  '1': 100,
  '2': 200,
  '3': 50
}

const sorted = Object.entries(users).sort((a, b) => a[1] > b[1] ? -1 : 1)
console.log(sorted)

const users = {
  '1': 100,
  '2': 200,
  '3': 50
}

const sorted = Object.keys(users).sort((a, b) => users[a] > users[b] ? -1 : 1)
console.log(sorted)

sorted.forEach(k => {
  console.log(k, users[k])
})

Beantwortet am 27/11/2018 um 18:01
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more