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的名称?
答
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}})
这将记录汽车的名称到控制台。如果你想保留它,只要确保分配它。
迭代车阵,并检查ID在每个迭代上匹配,突破和发现时返回。使用.each()来迭代。 – Auris