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

时间:2016-11-25 16:26:20

标签: 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的名称?

4 个答案:

答案 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;
&#13;
&#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)