簡體   English   中英

在JSON對象中查找特定值

[英]Find specific value in JSON object

{
  "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"
    }
}

嗨! 這是tmdb php api的tmdb示例輸出。 例如,如何通過jquery獲取Directors名稱? 機組輸出的順序是隨機的。

通常,當您在數組中搜索內容時,您要遍歷數組直到找到它。 無論您使用的是jQuery還是純JavaScript或任何其他具有數組的語言,這都是相同的。

在您的情況下,您要搜索屬性job等於字符串"Director"

找到它后,您想從該對象返回屬性name

您可以使用for循環執行此操作:

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

或者也許是while循環:

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

使用內置方法Array.prototype.find和arrow函數,可以將代碼簡化為:

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

嘗試這個:

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

我喜歡使用some()

aMovie.crew.some(function(member) {

    var job = member.job.toLowerCase();

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM