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 ...
随机推荐
- PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践
title: PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践 date: 2025/1/28 updated: 2025/1/28 author: c ...
- Codeforces Round 999 比赛记录
前情提要 这个菜鸡CF上了 \(\color{darkcyan}Specialist\),心情大好,正好赶上放假,决定打一场CF. 赛时记录 A 上来脑子抽了,吃了一发罚时.发现写错了一种情况,改过来 ...
- WinForm 进度条显示进度百分比
参考: https://blog.csdn.net/zhuimengshizhe87/article/details/20640157 WinForm中显示进度条百分比有多种方式: 1. 添加 Lab ...
- 同事PPT又拿奖了?偷偷用这AI工具,3步做出老板狂赞的年度报告
大家好,我是六哥,今天为大家分享一款PPT辅助神器,年底汇报必备神器!就是Napkin AI ! 这是一款超级酷的工具,它能把你写的文字一秒钟转化为各种炫酷的视觉效果,比如图表.流程图.信息图啥的.如 ...
- 【IDEA】IDEA上如何解决代码冲突
首先,坐好准备工作,在feature-resolve-conflict分支上作如下改动: 在master分支作如下改动: 假如现在我们需要将master分支合并到feature-resolve-con ...
- 【COM3D2Mod 制作教程(1)】教程简介
[COM3D2Mod 制作教程(1)]教程简介 教程来自:https://bdffzi.github.io/opencom3d2/#/Research/MakeMod(含配套视频) 前言 没有Mod ...
- CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
CSnakes 是一个用于在.NET项目中嵌入Python代码的工具,由.NET源生成器和运行时组成,能够实现高效的跨语言调用,Github:https://github.com/tonybalone ...
- redis - [07] 数据类型
redis是一个开源(BSD许可)的,内存中的数据结构存储系统,可以用作数据库.缓存和消息中间件MQ.它支持多种类型的数据结构,如字符串(String).散列(Hash).列表(List).集合( ...
- 传统Item-Based协同过滤推荐算法改进
前言 今天要读的论文为一篇于2009年10月15日发表在<计算机研究与发展>的一篇会议论文,论文针对只根据相似性无法找到准确可靠的最近邻这个问题,提出了结合项目近部等级与相似性求取最近邻的 ...
- 读论文-基于序列模式的电子商务推荐系统综述(A Survey of Sequential Pattern Based E-Commerce Recommendation Systems)
前言 今天读的论文为一篇于2023年10月3日发表在<算法>(Algorithms)的论文,这篇文章综述了基于序列模式的电子商务推荐系统,强调了通过整合用户购买和点击行为的序列模式来提高推 ...