Jquery 如何查找唯一具有值的对象属性

Jquery 如何查找唯一具有值的对象属性,jquery,object,Jquery,Object,当发出jQuery ajax调用时,生成的jqXHR变量data将传递给下面的呈现函数renderData。该函数通过只填充$type对象的一个属性来确定数据来自何处 有什么好方法可以找出哪些属性被填充,以及数据从何而来 function renderData(data){ var $type = { contact : $(data).filter('#contact'), details : $(data).find('#details'),

当发出jQuery ajax调用时,生成的jqXHR变量
data
将传递给下面的呈现函数
renderData
。该函数通过只填充
$type
对象的一个属性来确定数据来自何处

有什么好方法可以找出哪些属性被填充,以及数据从何而来

function renderData(data){
    var $type = {
        contact : $(data).filter('#contact'),
        details : $(data).find('#details'),
        other   : $(data).find('#other')
    };
    // Get the populated property and store its value in "endResult"
    endResult.appendTo('#wrapper').hide().fadeIn();
};
我可能会使用循环来查找属性并将其封装在函数中

var type1 = {
    contact : 'a',
    details : undefined,
    other   : undefined
};

var type2 = {
    contact : undefined,
    details : undefined,
    other   : 'b'
};

var type1Prop = getPopulatedProperty(type1);
alert(type1Prop + ' = ' + type1[type1Prop]);
var type2Prop = getPopulatedProperty(type2);
alert(type2Prop + ' = ' + type2[type2Prop]);

function getPopulatedProperty(obj) {
    for (var prop in obj) {
        if (obj[prop] !== undefined && obj[prop] !== null && obj[prop] !== '') {
            return prop;
        }
    }
    return undefined;
}

我猜你也是创造这个物体的人,对吧?为什么不简单地向对象添加一个属性来告诉您它的用途呢

例如,如果通过从PHP回显JSON来创建对象,则可以添加一个“type”属性:

echo('{"type": "contactForm", ...your data goes here}');
这样,渲染函数将变为:

function renderData(data){
    var $type = data.type;
    ...
};

使您不必在属性中循环查找某些您应该已经知道的内容(如果您是对象的作者)。如果您使用的是无法控制的对象,Daniel的解决方案应该可以做到。

更正,这似乎是一个可以回答的问题。谢谢-我对这种情况有困难,但这正是我想要的。更正-我认为这是正确的答案,但出于某种原因,第一个属性总是由
getPopulatedProperty()
返回。控制台告诉我它有一个值[object object],您需要在函数中更改您的条件,然后就好像它们是空的一样,它们仍然是对象。该函数假定要为空,属性必须为未定义、null或空字符串。