узел.js; список строк из файла JSON по порядку

avatar
1114
9 августа 2021 в 00:33
50
2
0

У меня есть файл users.json, который содержит, среди прочего, такие данные:

[
  {
     "nick": "user123",
     "active24": 579
     ...
  }, {
     "nick": "nick",
     "active24": 259
     ...
  }
]

Я хочу создать таблицу лидеров, показывающую первые 10 никнеймов пользователей (из неизвестного максимального значения пользователей), на основе их "active24" (от самого большого к самому маленькому). Я могу сделать это с помощью массива, но проблема в том, что бот не может отправить его с помощью vk-io (причина не важна, поэтому я не описываю это здесь, но, пожалуйста, сохраняйте окончательный ввод не как массив, а как переменные и т. д.). Я хочу, чтобы результат выглядел так:

Var_top1 = `${nick}: ${active24}`;
Var_top2 = `${nick}: ${active24}`;
Var_top3 = `${nick}: ${active24}`;
...
Var_top10 = `${nick}: ${active24}`;

P.S. извините за мой плохой английский

Источник

Ответы (2)

avatar
Eric Cheng
9 августа 2021 в 01:21
0

вы хотите что-то подобное?

const data = [
  {
    nick: "user111",
    active24: 579
  },
  {
    nick: "nick222",
    active24: 0
  },
  {
    nick: "nick333",
    active24: 84
  },
  {
    nick: "nick444",
    active24: 9459
  }
];

  const sorted = data.sort((a, b) => b.active24 - a.active24);
  console.log(JSON.stringify(sorted)); 
  //[{"nick":"nick444","active24":9459},{"nick":"user111","active24":579},{"nick":"nick333","active24":84},{"nick":"nick222","active24":0}]
  const top1 = sorted[0];
  const top2 = sorted[1];
  const top3 = sorted[2];
  const top4 = sorted[3];
fifoq
11 августа 2021 в 14:51
0

Array.sort не создает новый массив, а вместо этого изменяет содержимое массива, в котором он применяется. В этом случае переменная sorted является избыточной.

avatar
fifoq
9 августа 2021 в 01:12
0

Упорядочивание массива с использованием такой методологии, как array.prototype.sort.

После того, как все члены массива отсортированы, вам просто нужно их распечатать array[0].nick + ":" + array[0].active24

let jsonObject = [
    {
        "nick": "user123",
        "active24": 579
    },
    {
        "nick": "user234",
        "active24": 1
    },
    {
        "nick": "nick",
        "active24": 259
    }
];

// Orders the array
jsonObject.sort((firstElem, secondElem) => {
    if (firstElem.active24 > secondElem.active24) return 1;
    if (firstElem.active24 < secondElem.active24) return -1;
    return 0;
})

// Prints the entire ordered array 
console.log(JSON.stringify(jsonObject, null, 2));

// Prints the nick and the active24 value
for (let i = 0; i < jsonObject.length; i++) {
    console.log(jsonObject[i].nick + ":" + jsonObject[i].active24);
}