js 判断对象的某个属性是否存在

 JavaScript  2022-03-27  admin  1796  2424

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属性
}

如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


esp32 使用mqtt 通讯

esp32 使用mqtt 通讯基于go的mqtt 客户端packagemain import( "fmt" "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/frame/g" "gobot.io/x/gobot" &qu

GoFrame 框架中使用 mqtt 协议通讯

GoFrame 框架中使用 mqtt//SPDX-License-Identifier:MIT //SPDX-FileCopyrightText:2022mochi-mqtt,mochi-co //SPDX-FileContributor:mochi-co packagemqtt import( "flag" "gfmqtt/internal/

laravel 自定义写入日志

laravel 自定义写入日志if(!function_exists('myLog')){ /** *生成自定义文件日志内容 *@param$data *@paramstring$title *@parambool$isClear *@returnvoid *@Author:cent123.com */ functionmyLog($data,string$tit

go 递归读取目录,并生成树形结构的数据

go 递归读取目录,并生成树形结构的数据//读取目录中的所有文件,如果是目录则递归读取,生成结构化的树形struct packagemain import( "encoding/json" "fmt" "os" "path/filepath" ) //TreeNode文件的树形结构体 ty