2017-02-26 3 views
0
{ 
    "adult": false, 
    "budget": 17000000, 
    "crew": [ 
    { 
     "credit_id": {}, 
     "department": "Directing", 
     "id": 40223, 
     "job": "Director", 
     "name": "Joe Carnahan", 
     "profile_path": "/5YPrZ1JprLwtU4tn5DG0wqLjsAT.jpg" 
    }, 
    { 
     "credit_id": "55444d6bc3a368573b0008ba", 
     "department": "Writing", 
     "id": 40223, 
     "job": "Writer", 
     "name": "Joe Carnahan", 
     "profile_path": "/5YPrZ1JprLwtU4tn5DG0wqLjsAT.jpg" 
    }, 
    { 
     "credit_id": "52fe4482c3a36847f809a3ed", 
     "department": "Production", 
     "id": 2236, 
     "job": "Producer", 
     "name": "Tim Bevan", 
     "profile_path": "/f7o93O1KocuLwIrSa7KqyL1sWaT.jpg" 
    } 
} 

Hallo! Dies ist ein TMDB-Beispiel-Ausgabe von TMDB php api. Wie zum Beispiel Directors Name mit jQuery bekommen? Die Reihenfolge der Crew-Ausgabe ist zufällig.Spezifischen Wert im JSON-Objekt suchen

+0

Mögliches Duplikat von [Objekt nach ID in einem Array von JavaScript-Objekten suchen] (http://stackoverflow.com/questions/7364150/find-object-by-id-in-a-array-of- JavaScript-Objekte) – JJJ

+0

'' 'var object = [Ihr Objekt]; var directors = []; manager = jQuery.grep (object.crew, funktion (element, i)) { return element.name === 'Director'; }); '' 'wenn es mehrere directors in deiner crew gibt? – jedgard

Antwort

0

Versuchen Sie dies:

var aMovie = { 
 
    "adult": false, 
 
    "budget": 17000000, 
 
    "crew": [ 
 
    { 
 
     "credit_id": {}, 
 
     "department": "Directing", 
 
     "id": 40223, 
 
     "job": "Director", 
 
     "name": "Joe Carnahan", 
 
     "profile_path": "/5YPrZ1JprLwtU4tn5DG0wqLjsAT.jpg" 
 
    }, 
 
    { 
 
     "credit_id": "55444d6bc3a368573b0008ba", 
 
     "department": "Writing", 
 
     "id": 40223, 
 
     "job": "Writer", 
 
     "name": "Joe Carnahan", 
 
     "profile_path": "/5YPrZ1JprLwtU4tn5DG0wqLjsAT.jpg" 
 
    }, 
 
    { 
 
     "credit_id": "52fe4482c3a36847f809a3ed", 
 
     "department": "Production", 
 
     "id": 2236, 
 
     "job": "Producer", 
 
     "name": "Tim Bevan", 
 
     "profile_path": "/f7o93O1KocuLwIrSa7KqyL1sWaT.jpg" 
 
    }] 
 
}; 
 

 
var findDirector = function(aMovie){ 
 
    if(!aMovie.crew || aMovie.crew.length==0) return ""; 
 
    
 
    var director = aMovie.crew.find(function(member){ 
 
     return member.job.toLowerCase() == 'director'; 
 
    }); 
 
    return director.name; 
 
}; 
 

 
alert(findDirector(aMovie));

0

Im Allgemeinen, wenn Sie nach etwas in einem Array suchen, möchten Sie das Array durchlaufen, bis Sie es finden. Dies ist gleich, egal ob Sie jQuery oder einfaches JavaScript oder eine andere Sprache mit Arrays verwenden.

In Ihrem Fall möchten Sie nach einem Objekt mit der Eigenschaft job gleich der Zeichenfolge "Director" suchen.

Sobald Sie es finden, möchten Sie die Eigenschaft name von diesem Objekt zurückgeben.

Sie können dies tun mit einer for Schleife:

function findDirectorName(data) { 
    for (let i = 0; i < data.crew.length; i++) { 
    let crewMember = data.crew[i]; 
    if (crewMember.job === 'Director') { 
     return crewMember.name; 
    } 
    } 
} 

Oder vielleicht eine while-Schleife:

function findDirectorName(data) { 
    let i = 0; 
    while (i < data.crew.length) { 
    let crewMember = data.crew[i]; 
    if (crewMember.job === 'Director') { 
     return crewMember.name; 
    } 
    i++; 
    } 
} 

Mit der integrierten Methode Array.prototype.find Pfeil und Funktionen, können Sie den Code vereinfachen :

function findDirectorName(data) { 
    let director = data.crew.find(crewMember => crewMember.job === 'Director'); 
    return director ? director.name : undefined; 
} 
0

Ich mag mit some().

aMovie.crew.some(function(member) { 

    var job = member.job.toLowerCase(); 

    if(job == "director") return member; 

} 
Verwandte Themen