2016-11-25 79 views
-1

我需要創建一個函數,該函數在給定id時會返回汽車的名稱。Javascript通過id從數據獲取名稱函數

我有這樣的數據:

{ 
    "cars": [ 
     { 
      "id": "661", 
      "name": "ford" 
     }, 

     { 
      "id": "657", 
      "name": "fiat", 
     }, 

     { 
      "id": "654", 
      "name": "volvo", 
     }, 

     { 
      "id": "653", 
      "name": "porche", 
     }, 

     { 
      "id": "650", 
      "name": "mazda", 
     } 

    ] 
} 

所以,我已經做到了這一點:

function getCarNameFromId(id) { 

    theData = { 
     "cars": [ 
      { 
       "id": "661", 
       "name": "ford" 
      }, 

      { 
       "id": "657", 
       "name": "fiat", 
      }, 

      { 
       "id": "654", 
       "name": "volvo", 
      }, 

      { 
       "id": "653", 
       "name": "porche", 
      }, 

      { 
       "id": "650", 
       "name": "mazda", 
      } 

     ] 
    }; 

    console.log(theData.name); 

} 

然後調用它:

function getCarNameFromId('650'); 

如何完成這個代碼,所以我可以獲取代碼返回給我指定的ID的名稱?

+0

迭代車陣,並檢查ID在每個迭代上匹配,突破和發現時返回。使用.each()來迭代。 – Auris

回答

1

JS溶液

var findCar = function(id) { 
 
    var theData = { 
 
     "cars": [{ 
 
       "id": "661", 
 
       "name": "ford" 
 
      }, 
 

 
      { 
 
       "id": "657", 
 
       "name": "fiat", 
 
      }, 
 

 
      { 
 
       "id": "654", 
 
       "name": "volvo", 
 
      }, 
 

 
      { 
 
       "id": "653", 
 
       "name": "porche", 
 
      }, 
 

 
      { 
 
       "id": "650", 
 
       "name": "mazda", 
 
      } 
 

 
     ] 
 
    }; 
 

 
    for (var i = 0; i < theData.cars.length; i++) { 
 
     var car = theData.cars[i]; 
 
     if (car.id === id) 
 
      return car.name; 
 
    } 
 
} 
 
console.log(findCar("654"));

1

如果您使用任何瀏覽器mordenr你可以使用find方法從陣列上找到對象

function getCarNameFromId(id) { 
    ...... 
    .......... 
    ..... 
    var obj = theData.cars.find(function(el) { 
     return el.id == id 
    }) 
    if(obj){ 
     return obj.name 
    } else { 
     return ''; // or just without any value. 
    } 
} 

如果還是要支持舊的瀏覽器,我會推薦使用lodash.js或underscore.js

0

您可以使用名爲some()的Array原型函數。它迭代你的數組,應用一個函數,如果計算結果爲真,則結束迭代過程。當在大型數組中進行ID查找時,這會被優先考慮,這些數據將返回一條記錄,因爲當它發現一個真正的答案時,它會停止迭代。要在你的情況下使用它,你會寫一個看起來像這樣的聲明

var searchID='650' 
theData.some(function(car){if (car.id==searchID){console.log(car.name);return true}}) 

這將記錄汽車的名稱到控制檯。如果你想保留它,只要確保分配它。