Создать простой массив рангов, используя функцию карты (JavaScript)

По сути, у меня есть JSON, который находится в следующем формате:

JSON= [
{username: foo, score: 12343}, 
{username: bar, score: 9432}, 
{username: foo-bar, score: 402, ...
]

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

Как я могу сделать массив, который автоматически вставляет позицию ранга? Например, я хотел бы увидеть вывод:

[1, username: foo, score: 12343],
[2, username: bar, score: 9432], 
[3, username: foo-bar, score: 402],...

3 ответа

Ваш синтаксис кажется выключенным, но при условии, что JSON:

JSON = [
  {username: 'foo', score: 12343}, 
  {username: 'bar', score: 9432}, 
  {username: 'foo-bar', score: 402}
]

Поскольку массивы индексируются 0, и у вас есть доступ к текущему индексу в .map метод, вы можете сделать что-то по следующему:

JSON = JSON.map(function (record, index) {
  record.rank = index + 1;
  return record;
})

Это должно дать вам следующий вывод:

[ 
  { rank: 1, username: 'foo', score: 12343 },
  { rank: 2, username: 'bar', score: 9432},
  { rank: 3, username: 'foo-bar', score: 402}
]

Надеюсь это поможет.

Javascript уже помог вам. Массив всегда имеет индексы, хотя он начинается с нуля. Если вы хотите лучшее, просто используйте

console.log(JSON[0]);

и если вы настаиваете, чтобы 1 был 1, попробуйте это

function getByRank(index) {
   return JSON[index - 1]; 
}

так что вы получите лучшее с

console.log(getByRank(1)); // {username: "foo", score: 12343}

Я думаю, что в вашем коде JSON является действительным JSON, см. " вокруг фу...

Строго говоря, с точки зрения вашего вопроса вы уже получили ответ. Я просто хочу перечислить некоторые идеи, возможно, они будут полезны для некоторых из вас в будущем:

  1. Прежде всего, JSON (нотация объектов JavaScript) - это формат открытого стандарта, который использует читаемый человеком текст для сериализации объектов, массивов, чисел, строк, логических значений и нулевого значения. Его синтаксис, как следует из названия, получен из JavaScript, но на самом деле JSON - это текст, строка.

  2. Строка JSON является ( почти всегда) синтаксически правильным кодом JavaScript.

  3. Убедитесь, что вы не используете ключевое слово "JSON" в качестве имени переменной, поскольку JSON на самом деле является существующим объектом в JavaScript и используется для кодирования в формат JSON (stringify) и декодирования из формата JSON (parse). Просто попробуй JSON.stringify({a: 2, b: 3}); а также JSON.parse('{"a":2,"b":3}'); в консоли JavaScript.

Другие вопросы по тегам