我需要创建一个函数,在给出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 :(得分: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
答案 1 :(得分: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"));
&#13;
答案 2 :(得分:0)
您可以使用名为some()的数组原型函数。它使用一个函数迭代你的数组,如果求值为true,则结束迭代过程。当在大型数组中进行ID查找时,这将是优先的,它将返回一条记录,就像它找到一个停止迭代的truthy答案一样。要在你的情况下使用它,你会写一个看起来像这样的语句
var searchID='650'
theData.some(function(car){if (car.id==searchID){console.log(car.name);return true}})
这会将汽车的名称记录到控制台。如果你想保留它,只需确保分配它。
答案 3 :(得分:0)