2016-06-07 91 views
0

所以我有这个功能,我希望吐出一些对象信息,如果有东西在里面。但我被卡住了。任何人都知道问题是什么?功能不起作用,我不明白为什么

function ifExist(property) { 
    if (randomObj.property === "") { 
     message += ""; 
    } else { 
     message += "<span class='propString'>" + randomObj.property + "</p>"; 
    } 
    return message; 
} 

ifExist(citation); 
ifExist(year); 

非常感谢!

+0

你必须使用一个字符串,以及索引。 –

回答

2

使用括号符号来引用更改的键:randomObj[property]这应该允许您使用动态属性名称从对象的键中提取值。

使用randomObj.property(点符号)会在您的randomObject上直接找到名为property的钥匙。

此外,一定要通过你的钥匙作为字符串:

ifExist("citation"); 
ifExist("year"); 

通过随着Flôwz提到的,它也是一个聪明的想法尝试处理任何数据之前,确保你的对象上存在关键你不能保证存在。

+0

我会告诉你,我正在与一个数组对象有任何区别.. ?? –

+0

你可以给我一个这个数组的例子吗?如果你正在使用数组和键/值对象,你将不得不对你如何查找所需值做一些小的修改。相关链接: http://stackoverflow.com/questions/8067590/associative-array-versus-object-in-javascript –

+0

var people = [ {name:“John”, lastname:“Hancock”}, {名称:“Peter”, 姓氏:“Parker”} ]; –

1

尝试:

function ifExists(obj, property) { 
    return obj.hasOwnProperty(property); 
} 

var obj = { myprop: 'I got this.' }; 
console.log(ifExists(obj, 'myprop')); // also notice quotes. 
0

首先,你需要确定你有什么检查:有无财产完全不存在某一物体上,或者等于null或空("")或undefinedfalse0根据在其类型上。

在第一种情况下使用object.hasOwnProperty(property)。 对于所有其他情况(当你知道属性存在):

if (!object[property]){ 
    //... 
} 

更好的内部标签属性不使用单引号。正确的做法是:

var message += '<span class="propString">'; 

,或者你可以逃脱它:

var message += "<span class=\"propString\">"; 
相关问题