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