对象 - 检查字段是否存在

时间:2015-03-19 17:10:57

标签: jquery hasownproperty

我有一个带有以下标记的对象:

Object {workout: Object}
   workout: Object
   1/12/2015: Array[3]
       0: "workoutTitle0"
       1: "workoutTitle1"
       2: "workoutTitle2"
    2/12/2015: Array[3]
    3/12/2015: Array[3]
    4/12/2015: Array[3]
    5/12/2015: Array[3]
    6/12/2015: Array[3]
    7/12/2015: Array[3]

我想检查一下10/12/2015字段是否存在 - 如果存在我想加载该字段所持有的数组,如果没有为该字段创建新的空数组。

我尝试了这段代码,但每次都会出错,即使字段不存在:

function isEmpty(obj) {
    var prop = '10/12/2015'
    for( prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }
    return true;
}

这里如果JSFiddle:

https://jsfiddle.net/x9dnwgwc/3/

1 个答案:

答案 0 :(得分:2)

  

我想检查一下10/12/2015字段是否存在

你工作太辛苦,只是:

if (obj.hasOwnProperty('10/12/2015')) {
    // It exists in the object itself
}

...对于“自己的”属性,或

if ('10/12/2015' in obj) {
    // It exists in the object or one of its prototypes
}

...对于属于的属性,它继承自原型。

  

我尝试了这段代码,但每次都会出错,即使字段不存在:

function isEmpty(obj) {
    var prop = '10/12/2015'
    for( prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }
    return true;
}

var prop = '10/12/2015';

行声明prop变量,并为其指定值'10 / 12/2015';但是你立即用以下内容覆盖该值:

for( prop in obj) {

for-in循环首先要做的是覆盖prop的值。

你的循环真正在做的是检查对象是否有任何“自己的”属性(如果是,它返回false)或只有它继承自其原型的属性(如果是这样,它返回'true')。