功能不起作用,我无法弄清楚原因

时间:2016-06-07 18:32:43

标签: javascript arrays object

所以我有这个功能,如果有什么东西,我希望吐出一些对象信息。但我被卡住了。谁知道问题是什么?

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

ifExist(citation);
ifExist(year);

正手感谢!

3 个答案:

答案 0 :(得分:2)

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

使用randomObj.property(点表示法)会在property上找到名为randomObject的键。

此外,请务必将密钥作为字符串传递:

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

正如OvérFlôwz所提到的,在尝试处理您无法保证存在的任何数据之前,确保您的对象上存在密钥也是一个明智的想法。

答案 1 :(得分:1)

尝试:

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

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

答案 2 :(得分:0)

首先,你需要确定你在检查什么:某个对象上的属性是否完全存在,或者它等于null还是空("")或undefined或{{ 1}}或false取决于其类型。

在第一种情况下使用0。 对于所有其他情况(当您知道该属性存在时):

object.hasOwnProperty(property)

最好不要在标记属性中使用单引号。正确的方法是:

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

或者你可以逃脱它:

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