js 判断对象的某个属性是否存在
// js 判断对象的某个属性是否存在,必须逐层判断,不能跨层 var list = { "class_one": [{ "name": "小明", "age": 18 }, { "name": "", "age": 18 }] } if (!list.hasOwnProperty("class_two")) { console.log("不存在class_two属性"); } if (!list["class_two"]) { console.log("不存在class_two属性"); } // 错误写法 list["class_two"]不存在,需要先判断list["class_two"]是否存在 Uncaught TypeError: Cannot read properties of undefined (reading 'sex') // if(list["class_two"]["sex"]){ // console.log(list["class_two"]); // }else{ // console.log("不存在"); // } // list["class_one"] 已存在 if (list["class_one"]["sex"]) { console.log(list["class_two"]); } else { console.log("不存在"); //不存在 } if (list.hasOwnProperty("class_one") && list["class_one"].hasOwnProperty(2) && list["class_one"][2].hasOwnProperty("name")) { console.log(list["class_one"][2]["name"]); } else { console.log("class_one不存在第3个对象的name属性"); //class_one不存在第3个对象的name属性 } // 错误写法 Uncaught TypeError: Cannot read properties of undefined (reading 'hasOwnProperty') // if (list["class_one"][2].hasOwnProperty("name")) { // console.log(list["class_one"][2]["name"]); // } else { // console.log("class_one不存在第3个对象的name属性"); //class_one不存在第3个对象的name属性 // } if (list["class_one"] && list["class_one"][2] && list["class_one"][2]["name"]) { console.log(list["class_one"][2]["name"]); } else { console.log("class_one不存在第3个对象的name属性"); //class_one不存在第3个对象的name属性 } // 错误写法 list["class_one"][2] Uncaught TypeError: Cannot read properties of undefined (reading 'name') // if (list["class_one"][2]["name"]) { // console.log(list["class_one"][2]["name"]); // } else { // console.log("class_one不存在第3个对象的name属性"); //class_one不存在第3个对象的name属性 // } if (list["class_two"] && list["class_two"][2] && list["class_two"][2]["name"]) { console.log(list["class_two"][2]["name"]); } else { console.log("class_two不存在第3个对象的name属性"); //class_two不存在第3个对象的name属性 }