我有一个JSON对象
var values = {"220":{"287":19,"total":19},"":{"240":76,"total":76},"total":95};
我无法检查是否定义了values[item]['total']
。
项是从selectbox值得到的变量,基本上我正在尝试if else语句,我需要检查是否定义了values[item]['total']
,我有2个场景
项目是220,或者是另一个进入“”的数字(json对象是用php生成的,在这种情况下它有220和“”,因为它没有“颜色”值,只有大小,但是通常它有正确的值)
在我的案例中,项目值是{}括号中的值 - 例如287和240
此代码:
if ( typeof values[item]['total'] === 'undefined' ) {
console.log('undefined');
}
抛出:Uncaught TypeError: Cannot read property 'total' of undefined.
答案 0 :(得分:2)
当item
的值与将返回null的任何属性不匹配时,将导致该错误,然后您尝试访问它的属性,但您不能,因为该项为null。
你应该做的是检查两个部分是否未定义:
if ( typeof values[item] === 'undefined' || typeof values[item]['total'] === 'undefined') {
console.log('undefined');
}
答案 1 :(得分:1)
if ( typeof values[item]!== 'undefined' &&
values[item].hasOwnProperty('total')===false )
{
console.log('Total undefined');
}
注意:确保为项目传递字符串。所以它将被编译为项目[" 220"]而不是项目[220]。在JavaScript中,对象索引器由字符串名称
访问答案 2 :(得分:1)
您可以使用in
来检查:
if (item in values && 'total' in values[item]) {
console.log('defined');
}