Javascript-';toLowerCase()';不处理对象属性

Javascript-';toLowerCase()';不处理对象属性,javascript,Javascript,我试图提取一个对象的属性,并使该字符串成为小写字符串。出于某种原因,它不起作用: 我有一个对象,story,它有一个名为status的属性。状态显示为“空闲”或“已占用”或其他内容。我想写代码,以便这张表的管理员可以写“空”或“空”,而不必担心资本化。该状态也会显示在页面上,因此最好显示“空缺”的适当大小写。但这不是重点 我有一个if声明: $.each(story, function(i){ if(story[i].status == "vacant"){ showVa

我试图提取一个对象的属性,并使该字符串成为小写字符串。出于某种原因,它不起作用:

我有一个对象,
story
,它有一个名为
status
的属性。状态显示为“空闲”或“已占用”或其他内容。我想写代码,以便这张表的管理员可以写“空”或“空”,而不必担心资本化。该状态也会显示在页面上,因此最好显示“空缺”的适当大小写。但这不是重点

我有一个if声明:

$.each(story, function(i){
    if(story[i].status == "vacant"){
        showVacant(i-1);    
    } else if(story[i].status == "occupied"){
        showOccupied(i-1);
    } else if(story[i].status == "feature"){
        showFeatured(i-1);
    } else {
        showVacant(i-1);
    }
});
if(story[i].status.toLowerCase() == "vacant"){
我试着使用
toLowerCase():

$.each(story, function(i){
    if(story[i].status == "vacant"){
        showVacant(i-1);    
    } else if(story[i].status == "occupied"){
        showOccupied(i-1);
    } else if(story[i].status == "feature"){
        showFeatured(i-1);
    } else {
        showVacant(i-1);
    }
});
if(story[i].status.toLowerCase() == "vacant"){
但控制台返回错误
无法读取未定义的属性“toLowerCase”
。我还尝试先使用
.toString()
将其设置为变量:

myStatus = story[i].status.toString();
if(myStatus.toLowerCase() == "vacant"){
但这给了我一个控制台错误
无法读取未定义的属性“toString”


如何确保此语句中的字符串始终为小写?

状态设置不正确,返回的不是“空闲”或“占用”,而是未定义。因此,您不能将这个未定义的对象小写或字符串化


我建议在代码中的不同位置打印出对象的属性,以确定它没有正确设置或携带此属性的位置

状态设置不正确,返回的不是“空闲”或“占用”,而是未定义。因此,您不能将这个未定义的对象小写或字符串化


我建议在代码中的不同位置打印出对象的属性,以确定它没有正确设置或携带此属性的位置

无法读取未定义的属性“toLowerCase”
表示
故事[i]。状态不存在

改为这样做:

if( "status" in story[i] ) {
    switch( story[i].status.toLowerCase() ) {
        case "vacant":
            break;
        case "occupied":
            // etc
    }
}

无法读取未定义的属性“toLowerCase”
表示
故事[i]。状态不存在

改为这样做:

if( "status" in story[i] ) {
    switch( story[i].status.toLowerCase() ) {
        case "vacant":
            break;
        case "occupied":
            // etc
    }
}

无法读取未定义的属性“toLowerCase”
意味着未定义
故事[i]。状态
,因此它不是
字符串
,因此它无法使用
toLowerCase()
函数

在使用之前,您需要检查是否设置了“故事[i].status”:

if (typpeof story[i].status != "undefined"){
    //do stuff with story[i].status
}

无法读取未定义的属性“toLowerCase”
意味着未定义
故事[i]。状态
,因此它不是
字符串
,因此它无法使用
toLowerCase()
函数

在使用之前,您需要检查是否设置了“故事[i].status”:

if (typpeof story[i].status != "undefined"){
    //do stuff with story[i].status
}

您的状态未定义且未定义没有toString或toLowerCase方法。您的状态未定义且未定义没有toString或toLowerCase方法。这就是我得到答案的解决方案。我将if语句简化为只说
if(story[I].status){…/*执行语句*/}
。问题是第一个对象由于某种原因没有状态。不管怎样,抓住它总比解决一个小问题好。谢谢这是我得到答案的解决办法。我将if语句简化为只说
if(story[I].status){…/*执行语句*/}
。问题是第一个对象由于某种原因没有状态。不管怎样,抓住它总比解决一个小问题好。非常感谢。