首页 > 其他分享 >深层级数据的判断和获取

深层级数据的判断和获取

时间:2023-01-10 16:35:06浏览次数:31  
标签:判断 return actionGetExistedOfObjectTree fistName 获取 深层 targetLevelArray const tar

当后端返给前端的数据层级很深,前端去获取的时候,往往会因为数据缺失而导致页面崩溃。

这里我封装了两个函数,一个是判断深层级数据是否存在,另一个是获取深层级的数据。

 //  methods.js 

function actionGetExistedOfValue(value) {
  return [null, undefined].indexOf(value) === -1;
}
function emptyObject() {}

/**
 * 判断对象最深层级是否为空
 * @example actionGetExistedOfObjectTree(information, 'customer.customer_id');
 * @param targetObject
 * @param targetObjectString
 */
function actionGetExistedOfObjectTree(targetObject, targetObjectString) {
  if (!targetObject || typeof targetObject !== 'object' || targetObject instanceof emptyObject) {
    return false;
  }
  const targetLevelArray = targetObjectString.split('.');
  if (!actionGetExistedOfValue(targetObject[targetLevelArray[0]])) {
    return false;
  }
  const parentLevelString = targetLevelArray.shift();
  if (!parentLevelString) {
    return false;
  }
  if (targetLevelArray.length) {
    const targetObjectStrings = targetLevelArray.join('.');
    return actionGetExistedOfObjectTree(targetObject[parentLevelString], targetObjectStrings);
  }
  return true;
}


/**
 * 当判断深层级存在的时候使用
 * 取出该深层级的值
 */

function getValueObject(targetObject, targetObjectString){
  const targetLevelArray = targetObjectString.split('.');
  const val=targetObject[targetLevelArray[0]];
  targetLevelArray.shift();
  if (targetLevelArray.length&&val) {
    const targetObjectStrings = targetLevelArray.join('.');
    return  getValueObject(val, targetObjectStrings);
  }
    return val;
}

export { actionGetExistedOfObjectTree, getValueObject };

使用:

import {actionGetExistedOfObjectTree,getValueObject} from './methods';

 const data={
     person:{
       name:{
         fistName:"zzz"
       }
     }
   }
   

// 判断fistName是否存在,true存在,false不存在
    actionGetExistedOfObjectTree(data,`person.name.fistName`);
 // 获取fistName的值
    fistName=getValueObject(data,`person.name.fistName`)

 

标签:判断,return,actionGetExistedOfObjectTree,fistName,获取,深层,targetLevelArray,const,tar
From: https://www.cnblogs.com/class1/p/17040665.html

相关文章

  • c语言模拟用户输入三次密码并判断是否正确
    #include<stdio.h>intmain(){charpassword[20]={0};//先初始化这个数组避免出现其它数据intflag=0;//设立flag变量是若三次密码都输入错误了能向用户输出三次......
  • Python获取URL图片文件的哈希值 hash
    pipinstallPillow importhashlibfromioimportBytesIOdefget_hash(file):""":parambytesfile::return:"""md5hash=hashlib.m......
  • Shell判断字符串包含关系的几种方法
    现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,nslookup之后需要判断结果中是否包含“baidu”字符串以下给出一些shell中判断字符串包含的方法,来源程序......
  • 小程序动态获取自定义Tabbar的高度
    1、在tabbar组件js文件的ready方法中加入以下代码ready(){constquery=wx.createSelectorQuery().in(this)query.select('.tab-bar').boundingClientR......
  • request获取请求数据的方法
    1.获取所有参数map集合1map<String,String[]>getParameterMap()2.根据名称获取参数值(数组)1String[]fetParameterValues(Stringname)3.根据名称获取参数值(单......
  • Python 中获取文件名
    Python获取文件名importosimportsys#①获取当前文件名os.path.basename(__file__)#②获取程序启动文件名os.path.basename(sys.argv[0])#__file__#获取当前文件的......
  • 在线获取所有依赖rpm包的方法
    背景现在经常有一些不能上网的LInux机器但是需要安装一些软件.但是有时候经常因为有依赖关系找不到的情况比较麻烦.或者是一些公司的网络总是受限,网络速度非常慢.下......
  • 判断是不是平衡二叉树
    题目描述输入一棵节点数为n二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(BalancedBinaryTree),具有以......
  • 判断是不是完全二叉树
    题目要求给定一个二叉树,确定他是否是一个完全二叉树。完全二叉树的定义:若二叉树的深度为h,除第h层外,其它各层的结点数都达到最大个数,第h层所有的叶子结点都连续集中......
  • 客服系统前端开发:navigator对象能获取到的访客浏览器信息【唯一客服】网站在线客服系
    浏览器navigator能获取到一些有用的访客信息可以使用JavaScript的navigator对象来获取当前浏览器的信息。下面是navigator对象可以获取到的一些有用的信息:naviga......