function getPropByPath(obj, path, strict) {      
  let tempObj = obj;

  path = path.replace(/\[(\w+)\]/g, '.$1'); //将[0]转化为.0

  path = path.replace(/^\./, ''); //去除开头的.


  let keyArr = path.split('.'); //根据.切割

  let i = 0;

  for (let len = keyArr.length; i < len - 1; ++i) {

    if (!tempObj && !strict) break;

      let key = keyArr[i];

    if (key in tempObj) {

      tempObj = tempObj[key];

    } else {

      if (strict) {//开启严格模式,没找到对应key值,抛出错误

        throw new Error('please transfer a valid prop path to form item!');

      }

      break;

    }

  }

  return {

    o: tempObj, //原始数据

    k: keyArr[i], //key值

    v: tempObj ? tempObj[keyArr[i]] : null // key值对应的值

  };
};

getPropByPath:根据字符串路径获取对象属性 : 'obj[0].count'的更多相关文章

  1. js 获取对象属性个数

    js 获取对象属性个数 方法一: var attributeCount = function(obj) { var count = 0; for(var i in obj) { if(obj.hasO ...

  2. JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别

    JS中isPrototypeOf 和hasOwnProperty 的区别 1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的 ...

  3. 转: JavaScript 获取对象属性和方法

    一.获取对象属性和方法 Object.keys()for in 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返回的数组的所有属性(可枚举或不可枚举 ...

  4. js 获取 this 的属性 obj[0].getAttribute

    js  获取 this 的属性 obj[0].getAttribute

  5. JavaScript 获取对象属性和方法

    ShineJaie 原创整理,转载请注明出处. 一.获取对象属性和方法 Object.keys() 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返 ...

  6. EL表达式获取对象属性的原理

    EL表达式获取对象属性的原理是这样的: 以表达式${user.name}为例 EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找 ...

  7. 【java】java获取对象属性类型、属性名称、属性值

    java获取对象属性类型.属性名称.属性值 获取属性 修饰符:[在Field[]循环中使用] String modifier = Modifier.toString(fields[i].getModi ...

  8. 获取对象属性类型、属性名称、属性值的研究:反射和JEXL解析引擎

    同步发布:http://www.yuanrengu.com/index.php/20170511.html 先简单介绍下反射的概念:java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所 ...

  9. JS获取对象“属性和方法”的方法

    平时在写的代码过程中,经常会遇到对对象Object的数据处理.而在对对象的数据处理中,操作最频繁的是“数据引用”.“值的修改”.“获取关键字(属性)”.平时最烦的也是“获取关键字”,经常忘记怎么去获取 ...

  10. python遍历并获取对象属性--dir(),__dict__,getattr,setattr

    一.遍历对象的属性: 1.dir(obj) :返回对象的所以属性名称字符串列表(包括属性和方法). for attr in dir(obj): print(attr) 2.obj.__dict__:返 ...

随机推荐

  1. 使用 preloadComponents 进行组件预加载

    title: 使用 preloadComponents 进行组件预加载 date: 2024/8/18 updated: 2024/8/18 author: cmdragon excerpt: 摘要: ...

  2. esphome-esp8266

    esp8266使用esphome接入hass 对于生成配置文件的更改 此处nodemcu泛指集成的开发板,一般十几块钱一块 下方使用的是D1,对应的针脚是GPIO5 esp8266: board: n ...

  3. Oracle同一台服务器创建多个数据库

    有时候我们需要再同一台机器上创建多个数据库服务(不是单纯的数据库实例),每一个数据库可以有单独的服务运行,只是在一个机器环境而已.可以在不同的端口上监听,也可以在相同端口监听 创建多个数据库步骤 安装 ...

  4. pc 移动端 双端切换-路由判断

    该封装主要以分类形式,实现对路由的简易区分.便于项目管理. 创建好项目,勾选路由插件,会自动生成 router文件夹与index.ts . index.ts 初始内容 创建项目 自动生成的router ...

  5. SmartDeviceControl_FreeRTOS_Hal_F103

    系统框图 ## 显示子设备 框图 我们不想让文件互相调用 遇到的问题:OLED 无响应,I2C无法工作 解决:使用的是软件I2C,问题在于OLED的驱动中已经包含获取从机应答的函数 ### ==更新: ...

  6. ComfyUI 基础教程(三) —— 应用 Controlnet 精准控制图像生成

    一.前言 你是否有见过下面类似这样的图片: 看起来平平无奇,当你站远点看,或者把眼睛眯成一条缝了看,你会发现,这个图中藏有一些特别的元素.这就是利用了 Ai 绘画中的 ControlNet,实现对图片 ...

  7. 用 SQL 写的俄罗斯方块游戏「GitHub 热点速览」

    在开始介绍上周热门开源项目之前,要插播一条开源新闻:Nginx 已正式迁移至 GitHub. 近日,Nginx 官方宣布将 Nginx 开源项目,从 Mercurial 迁移至 GitHub 代码托管 ...

  8. java 线程、进程及相关知识点 《笔记一》

    一.线程.进程 线程,就是是进程的一个单位,程序最小执行单位. 进程,就是一个执行中的应用程序:由此可见,进程是由很多线程组成的: 线程生命周期,就是管杀也管埋的过程,生老病死: 线程的5个状态: 新 ...

  9. eclipse安装及配置jdk、tomcat

    一.安装eclipse: (安装之前一定要确认jdk是否安装,没安装的一定要安装) 官网下载:Eclipse Downloads | The Eclipse Foundation 下载好如图安装程序: ...

  10. python——celery异常consumer: Cannot connect to redis://127.0.0.1:6379/1: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.

    1.检查 Redis 日志: 查看 Redis 的日志文件(通常位于 /var/log/redis/redis-server.log 或者根据你的配置文件中指定的位置),以获取有关错误原因的详细信息. ...