Используйте переменную, чтобы найти json объект - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь использовать переменную для сопоставления идентификатора внутри массива

Под игроками есть 10 массивов, и я хочу просмотреть все из них, чтобы увидеть, соответствует ли моя переменная идентификатору. Если это так, то он должен использовать этот массив для отображения объектов.

async function showMatch() {
// My variable
let userid = 71471603
let Response = await fetch(`https://api.myjson.com/bins/1e96uo`);
let matchlist = await Response.json();

}
showMatch(); 

Таким образом, он должен go циклически повторять каждый matchlist.players[0 to 9].id, чтобы увидеть, соответствует ли он моей переменной userid.

Ответы [ 3 ]

0 голосов
/ 02 апреля 2020

Это должно сработать:

async function showMatch() {
  const userid = 71471603
  const Response = await fetch(`https://api.myjson.com/bins/1e96uo`);
  const matchlist = await Response.json();

  return matchlist.players.filter(player => players.id === userid)
}
0 голосов
/ 03 апреля 2020

Краткий ответ: консоль, потому что вы не можете вернуться из функции обещания (кроме использования затем)

 console.log(matchList.players.filter(player => player.id === userid)[0])

Длинный ответ: если вы выполните это Код в вашей консоли будет содержать информацию для:

1- EspartaN

2- Эльза

async function showMatch(idOfSpecificUser) {
  // idOfSpecificUser: the id of the user you want his/her information
  // make the GET request
  let response = await fetch(`https://api.myjson.com/bins/1e96uo`);
  // convert the response to JSON
  let responseToJson = await response.json();
  // take the players array from the response after convert it to JSON
  let playersArrayOfObject = responseToJson.players;
  // console.log(playersArrayOfObject); // => [ {}, {}, {}, ... ]

  // now the real fun start
  // you need to iterate over this array and get the user data
  // why [0] cause filter return to you array of object (we need the first match)
  // or the only one match // => [ {id: 71471603, username: "EspartaN", .....} ]
  let userInfo = playersArrayOfObject.filter(
    user => user.id === idOfSpecificUser
  )[0];


  console.log(userInfo.username); //=> "EspartaN"
  console.log(userInfo); // => { id: 71471603, username: "EspartaN", ..... }
}

// => "EspartaN"
showMatch(71471603);

// => "Elsa"
showMatch(97531);

Если вам нужно какое-либо объяснение, или это не то, о чем вы спрашиваете, пожалуйста, прокомментируйте мой ответ

0 голосов
/ 02 апреля 2020

Рассмотрим этот пример:

const animals = [
    {
        "name": "cat",
        "size": "small",
        "weight": 5
    },
    {
        "name": "dog",
        "size": "small",
        "weight": 10
    },
    {
        "name": "lion",
        "size": "medium",
        "weight": 150
    },
    {
        "name": "elephant",
        "size": "big",
        "weight": 5000
    }
];

let filterArray = animals.filter((animal) => {return animal.size === 'small'});
console.log(filterArray);// Returns an array which satisfies the match

Используйте .filter для фильтрации значений, которые вы ищете из массива.

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