javascript对象属性

时间:2012-07-10 06:27:21

标签: javascript object

有没有办法从另一个属性的值中获取一个对象属性

例如(在SQL中)从 object 获取 id ,其中 object.name =“somename”?

我需要获取该对象的id,但我只知道该名称。

3 个答案:

答案 0 :(得分:2)

我假设您正在尝试使用一组对象来执行此操作,因为否则没有意义。

根据您所需的浏览器支持,filter上有一个名为Array.prototype的方法。如果需要,你也可以垫片。

代码最终会看起来像这样:

var list = ​[
    {id:1, name:'bob'},
    {id:2, name:'jim'},
    {id:3, name:'sam'},
    {id:4, name:'tim'}
];

var sams = list.filter(function(obj){
    return obj.name == 'sam';
});

console.log(sams[0].id);

这是一个jsfiddle链接:http://jsfiddle.net/g8rTA/

答案 1 :(得分:0)

您可以使用此功能获取它:

function getObjectByAttribute(list, attr, val){
    var result = null;
    $.each(list, function(index, item){
        if(item[attr].toString() == val.toString()){
           result = item;
           return false;
        }
    });
    return result;
}

var obj = getObjectByAttribute(yourList, 'name', 'somename');
if(obj) console.log(obj.id);

编辑:

正如@nnnnnn所建议的那样,非jQuery替代方案:

function getObjectByAttribut(list, attr, val){
    var result = null;
    for(var ind in list){
        if(list[ind][attr] == val) return list[ind];
    }
    return null;
}

答案 2 :(得分:0)

我的问题不明确,但我正在回答这句话。

有没有办法从另一个属性的值中获取一个对象属性。

var obj = {
   'name' : 'ramesh',
   'surname' : 'suresh'
}

var obj2 = {
   'props' : 'name',
   'method' : 'blah'
}


for(var i in obj){
   if(obj.hasOwnProperty(i)){
      if(i === obj2['props']){
         console.log('Found ' + i);    // This will find 'name'
         break; 
      }

   }
}