Javascript通过id从数据获取名称函数

问题描述:

我需要创建一个函数,该函数在给定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

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

如果您使用任何浏览器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

您可以使用名为some()的Array原型函数。它迭代你的数组,应用一个函数,如果计算结果为真,则结束迭代过程。当在大型数组中进行ID查找时,这会被优先考虑,这些数据将返回一条记录,因为当它发现一个真正的答案时,它会停止迭代。要在你的情况下使用它,你会写一个看起来像这样的声明

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

这将记录汽车的名称到控制台。如果你想保留它,只要确保分配它。