2016-11-25 6 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
underscore.jsう配列

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. 
    } 
} 

からオブジェクトを見つけるために、findメソッドを使用することができます

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ブラウザを使用している場合、あなたはまだ古いブラウザをサポートしたい場合、私はlodash.jsを使用するrecommandまたは

0

some()という配列プロトタイプ関数を使用できます。それはあなたの配列を反復処理します。この関数はtrueと評価すると反復処理を終了します。これは、本当の答えが反復を止めるのを見つけたときに、1つのレコードを返す大きな配列でID検索を行うときに優先されます。あなたのケースでそれを使用するには、コンソールに車名をログに記録します。この

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

このようなものに見えた文を書くでしょう。それを保持したい場合は、それを割り当ててください。

関連する問題