检查是否定义了JSON对象

Check if JSON object is defined

本文关键字:JSON 对象 定义 是否 检查      更新时间:2023-09-26

我有一个JSON对象

var values = {"220":{"287":19,"total":19},"":{"240":76,"total":76},"total":95};

并且我不能检查是否定义了CCD_ 1。

item是从selectbox值中获得的变量,基本上我正在尝试做if-else语句,我需要检查是否定义了values[item]['total'],我有两个场景

  1. item是220,或者另一个"中的数字(json对象是用php生成的,在这种情况下它有220和",因为它没有"颜色"值,只有大小,但通常它有正确的值(

  2. 在我的情况下,项目值是{}括号中的值,例如287和240

此代码:

if ( typeof values[item]['total'] === 'undefined' ) {
    console.log('undefined');
}

抛出:Uncaught TypeError: Cannot read property 'total' of undefined.

您可以使用in检查:

if (item in values && 'total' in values[item]) {
    console.log('defined');
}

item的值与任何属性都不匹配时,就会导致该错误。它将返回null,然后您试图访问它的属性,但由于该项为null而无法访问。

你应该做的是检查两个部分是否未定义:

if ( typeof values[item] === 'undefined' || typeof values[item]['total'] === 'undefined') {
    console.log('undefined');
}

下面是一个工作示例

使用hasOwnProperty() 怎么样

 if ( typeof values[item]!== 'undefined' && 
      values[item].hasOwnProperty('total')===false ) 
     { 
        console.log('Total undefined'); 
     }

注意:请确保您正在为项传递字符串。因此它将被编译为项["220"]而不是项[220]。在JavaScript中,对象索引器由字符串名称访问