Więc to jest w pliku JSON:

{
  "page": 1,
  "total_pages": 10,
  "listings": [
    {
      "name": "Bob",
      "occu": "Entry",
      "team": "Blue",
      "sec": 3,
      "days": 16
    },
    {
      "name": "Tom",
      "occu": "Advance",
      "team": "Main",
      "sec": 1,
      "days": 23
    },

This continues on with hundreds of other entries...

Jak mogę wyciągnąć wartość "dni" tylko wtedy, gdy "nazwa" jest na przykład Tom.

Przepraszam, jeśli jest to prymitywne pytanie, dopiero zaczynam rozwijać się i pracuję nad szybkim projektem, który pomoże moim lokalnym zespołem sportowym i nie dość nie zaawansowanym ze skryptami lub interfejsami API. Dzięki

0
Oscar Sandoval 5 czerwiec 2018, 00:41

3 odpowiedzi

Najlepsza odpowiedź

Możesz wykonać taką funkcję, która pętla przez tablicę ({x0}}) obiektów:

getDaysFromListings = (listings, name) => {
    for (let listing of jsonObj.listings) {
        if (listing.name === name) {
            return listing.days;
        }
    }

    // didn't find 'Tom', return empty string
    return '';
}

Następnie zadzwoń do swojej funkcji:

// assuming your entire json object is stored in a variable called "json"
let days = getDaysFromListings(json.listings, 'Tom');

Ponieważ zmienna days jest przybierana jako string, możesz włączyć to do number za pomocą +days.

Edytuj : Aby dodać zmienną days do HTML, zakładajmy, że chcesz dodać tekst do div, który wygląda tak:

<div id="target"></div>

Możesz użyć JavaScript, aby dodać zmienną days tutaj:

// assume you already stored the data in variable
document.getElementById('target').innerHTML = days;

Uwaga : Musisz załadować ten JavaScript po ładować HTML div powyżej.

0
Blundering Philosopher 5 czerwiec 2018, 09:05

Ponieważ istnieje wiele sposobów, aby osiągnąć to i jestem pewien, że może to nie być najlepsza metoda, jeden sposób używa array.prototype.find https://developer.mozilla.org/ En-US / Docs / Web / JavaScript / Reference / Global_Objects / Array / Znajdź

var array1 = [{
      "name": "Bob",
      "occu": "Entry",
      "team": "Blue",
      "sec": 3,
      "days": 16
    }, {
      "name": "Tom",
      "occu": "Advance",
      "team": "Main",
      "sec": 1,
      "days": 23
    }];

var found = array1.find(function(element) {
  return element.name === "Bob";
});

console.log(found.days);
0
poweroftheforce 4 czerwiec 2018, 21:52

Aby wyciągnąć wartość "dni" tylko wtedy, gdy "nazwa" jest Toma musi filter o nazwie 'Tom' i następnie map days

let listings = [
    {
      "name": "Bob",
      "occu": "Entry",
      "team": "Blue",
      "sec": 3,
      "days": 16
    },
    {
      "name": "Tom",
      "occu": "Advance",
      "team": "Main",
      "sec": 1,
      "days": 23
    },
    {
      "name": "Tom",
      "occu": "Advanddce",
      "team": "Maiddn",
      "sec": 1,
      "days": 55
    }
];

const result = listings.filter(listing=> listing.name=="Tom").map(listing => listing.days);
console.log(result);
1
Mohammad Ali Rony 4 czerwiec 2018, 21:50