Próbuję użyć zmiennej, aby dopasować identyfikator wewnątrz tablicy

Pod odtwarzaczami znajduje się 10 tablic i chcę przejrzeć je wszystkie, aby sprawdzić, czy moja zmienna pasuje do id. Jeśli tak, powinien użyć tej tablicy do pokazania obiektów.

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

}
showMatch(); 

Powinien więc przechodzić cyklicznie co matchlist.players[0 to 9].id, aby sprawdzić, czy pasuje do mojej zmiennej identyfikatora użytkownika.

0
Hygge Hjørnet 2 kwiecień 2020, 23:35

3 odpowiedzi

Najlepsza odpowiedź

Rozważmy ten przykład:

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

Użyj .filter, aby odfiltrować wartości, których szukasz z tablicy.

0
LearningEveryday 2 kwiecień 2020, 20:39

Krótka odpowiedź: konsola, ponieważ nie możesz wrócić z funkcji obietnicy (z wyjątkiem użycia then)

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

Długa odpowiedź: wykonanie tego kodu w konsoli spowoduje utrwalenie informacji o:

1- EspartaN

2- Elsa

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);

Jeśli potrzebujesz wyjaśnień lub nie o to pytasz, skomentuj moją odpowiedź

0
Mohammad Jouza 2 kwiecień 2020, 21:20

To powinno załatwić sprawę:

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
Barry Michael Doyle 3 kwiecień 2020, 07:17