js判断对象任意深度的key属性是否存在,js的iset方法
方法一:
支持纯对象的obj
// isset.js
module.exports = (obj, keyPath) => {
const keys = keyPath.split('.');
for (const idx in keys) {
if (Object.hasOwnProperty.call(obj, keys[idx])) {
obj = obj[keys[idx]];
} else {
return undefined;
}
}
return obj;
}
// test.js
const isset = require('./isset');
const config = {
// 数据库配置
database: {
sqlite: {
dbname: 'order',
path:''
},
},
// 上传配置
upload: {
path: 'static/uploads/',
}
}
console.log(isset(config, 'upload.path')); // 'static/uploads/'
console.log(isset(config, 'upload.undef.path')); // undefined

方法二:
这里为另一种实现,有点low,使用时自行斟酌
// isset.js
/**
* @description: 判断对象的key属性是否存在
* @param {string} key
* @param {object} object
* @return {boolean}
*/
export default function isset(key, object = {}){
key = 'object.'+key;
try{
let _run= eval(key);
if(_run === undefined){
return false;
}
// console.warn(key+':'+_run);
return true;
}catch(err){
// console.warn(key,err);
return false;
}
}

调用:
// test.js
import isset from './isset';
let obj = {config:[{thumbs:'...'}]}
isset(`config[0].thumbs`, obj); // true
isset(`config[0].other`, obj); // false

js判断对象任意深度的key属性是否存在,js的iset方法的更多相关文章
- Js判断对象是否为空,Js判断字符串是否为空
Js判断对象是否为空,Js判断字符串是否为空,JS检查字符串是否为空字符串 >>>>>>>>>>>>>>>&g ...
- JavaScript 判断对象中是否有某属性
判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式. 一.点( . )或者方括号( [ ] ) 通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined. ...
- JS删除对象中的某一属性(delete)
var obj= {} 1.JS对象添加新属性 obj.address="shenzhen" 2.JS删除对象中的某一属性(delete) var obj= { height: , ...
- js 判断对象相等
文笔不是很好,一直在博客园属于那种只看不说的那种,有次心血来潮,想把自己的一些心得记录下来,我认认真真写了大半个小时,谁知一点保存,会话超时然后我的东西不知道去哪里,当时想死的心都有,写博客也就没那个 ...
- js 判断对象是否为空
利用JSON.stringify var objData = {};JSON.stringify(objData) ==="{}" // true 第二种用原声js 方法 Obje ...
- JS判断对象类型
对于确定JS内置对象类型,JS提供了typeof运算符,该运算符得到的结果为以下6种:number,boolean,string,function,object,undefined.不过对绝大多数对象 ...
- JS判断对象是否存在的方法
Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: ...
- js检测对象中是否存在某个属性
1.使用in关键字.该方法可以判断对象的自有属性和继承来的属性是否存在. 2.使用对象的hasOwnProperty()方法.该方法只能判断自有属性是否存在,对于继承属性会返回false. 3.用un ...
- js中对象的深度复制
// 对象的深度复制 cloneObj(oldObj) var cloneObj = function (obj) { var newObj = {}; if (obj instanceof Arra ...
- js判断对象数组中是否存在某个对象
1. 如果要判断数组中是否存在某个元素的话很好判断,直接用数组的indexOf方法就好,存在返回当前索引不存在返回-1 var arr=[1,2,3,4] arr.indexOf(3) arr.ind ...
随机推荐
- 取消浏览器中记住密码自动填充时弹出Windows安全中心的验证
1.问题描述 我们在使用谷歌浏览器的过程中,经常会将一些账号和密码记住在浏览器中,方便下次通过浏览器自动填充. 此方式虽然方便,但是有时候会遇到一种情况,那就是每次在浏览器中使用自动填充的时候,需会弹 ...
- 一款基于 WPF 开源、功能全面的串口调试工具
前言 今天大姚给大家分享一款基于 WPF 开源(MIT License).免费.功能全面的串口调试工具:BYSerial. 项目介绍 BYSerial是一款基于 WPF 开源(MIT License) ...
- 使用C#对Godot属性进行改写(其实是覆盖)
本文地址:https://www.cnblogs.com/oberon-zjt0806/p/14568221.html 背景 我还真没想到C#这个鬼东西还能这么用-- 起初是想通过某种办法改写一下La ...
- mysql之PreparedStatement的增删改
编写配置文件[db.properties]: driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/jdbcStudy?useUni ...
- docker容器内部添加字体
1.首先在windows电脑内找到字体拷贝到linux服务器,路径 C:\Windows\Fonts,linux的路径 /usr/share/fonts 2.复制到docker容器内部 docker ...
- js中的模糊搜索( 正则表达式)
此案例在vue中实现 搜索设备ID示例 <input type="text" name="" placeholder="搜索设备ID" ...
- 还在手动更改SpringBoot的环境yml配置文件?老鸟带你可视化配置
问题说明: 在SpringBoot开发时.SpringBoot的特性:'约定大于配置',我们只需要在**application.yml **配置当前的环境变量属与那个文件 比如测试环境 'applic ...
- 洋葱学园:开启高效学习之旅的宝藏 APP 40天会员5元到手价
洋葱学园是一款在在线教育领域表现出色的教学 APP ,下面为您详细介绍它的特点以及推荐理由. 丰富的学科覆盖: 洋葱学园涵盖了从小学到高中的全学科课程,包括数学.语文.英语.物理.化学等.无论您处于哪 ...
- Flink - [07] 容错机制
题记部分 一.一致性检查点 Flink故障恢复机制的核心,就是应用状态的一致性检查点.有状态流应用的一致性检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(一份快照):这个时间点,应该是所有 ...
- 「一」nginx介绍
应用场景 静态资源(js.css.图片 ) 反向代理 缓存加速(动态资源),比如社区活跃度排名 负载均衡(动态扩容.容灾) API服务 一个请求先经过nginx,再到应用服务器,访问数据库/redis ...