Как я могу получить наибольшее значение числа вместе с именем пользователя из этого массива? - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь получить пользователя и значение с наибольшим числом из этого массива, но мне не повезло в моих поисках. Я начинаю задумываться, плохо ли написан мой массив.

{
  "radtech2": 1,
  "conorlarkin4": 25,
  "jdon2001": 15,
  "nobel_veo": 101,
  "frapoden": 1,
  "duckyboy17": 31,
  "faeded": 30,
  "jimbob20001": 17,
  "leb0wski": 15,
  "3cavalry": 2,
  "hardoak22": 25,
  "deep_slide": 10000,
  "sillywil": 7
}

Ответы [ 4 ]

1 голос
/ 29 апреля 2019

const users = {
  "radtech2": 1,
  "conorlarkin4": 25,
  "jdon2001": 15,
  "nobel_veo": 101,
  "frapoden": 1,
  "duckyboy17": 31,
  "faeded": 30,
  "jimbob20001": 17,
  "leb0wski": 15,
  "3cavalry": 2,
  "hardoak22": 25,
  "deep_slide": 10000,
  "sillywil": 7
};

const highestUser = users => Object.keys(users).reduce(
  (highest, current) => highest.val > users[current] ? highest : { user: current, val: users[current] },
  { user: undefined, val: -Infinity }
).user;

console.log(highestUser(users));
0 голосов
/ 29 апреля 2019

Используйте методы keys() и entries() для поиска вашего объекта JSON. Сохранить наибольшее значение, например, в const largest, а затем выясните, какой ключ принадлежит этому значению.

0 голосов
/ 29 апреля 2019

То, что вы показываете в своем вопросе, это Object, а не Array;однако для работы с ним его необходимо превратить в массив.

Вы можете сделать это с помощью Object.entries(), который вернет массив всех ключей / значений.пары в объекте.

Затем вы можете использовать Array.reduce(), чтобы извлечь объект с наибольшим значением.

const data = {
  "radtech2": 1,
  "conorlarkin4": 25,
  "jdon2001": 15,
  "nobel_veo": 101,
  "frapoden": 1,
  "duckyboy17": 31,
  "faeded": 30,
  "jimbob20001": 17,
  "leb0wski": 15,
  "3cavalry": 2,
  "hardoak22": 25,
  "deep_slide": 10000,
  "sillywil": 7
}

let winner = Object.entries(data).reduce((a, b) => (a[1] > b[1]) ? a : b)

console.log(winner)
0 голосов
/ 29 апреля 2019

Позвольте мне втиснуть его в однострочный подход, используя Object.keys () и Array.reduce () .

const users = {
  "radtech2": 1,
  "conorlarkin4": 25,
  "jdon2001": 15,
  "nobel_veo": 101,
  "frapoden": 1,
  "duckyboy17": 31,
  "faeded": 30,
  "jimbob20001": 17,
  "leb0wski": 15,
  "3cavalry": 2,
  "hardoak22": 25,
  "deep_slide": 10000,
  "sillywil": 7
};


const res = Object.keys(users).reduce((a, b) => users[a] > users[b] ? a : b);

console.log(res);

Как работает приведенный выше код, я получаю массив ключей от объекта users, и использую Reduce для получения максимально возможного значения и возврата соответствующего свойства.из массива, полученного из Object.keys ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...