zoukankan      html  css  js  c++  java
  • js获取嵌套数组,嵌套对象的值

    2021-1-12 11:55:14 星期二

    场景: 服务端会返回一大堆字段的定义列表, 比如 order_status: {-1: '异常', 1: '已下单', 2 : '发货中', 3:....}, 需要前端将汉字展示在页面中;  

    原因:  如果数组或对象是多维的, 嵌套了很多层, 就需要写很多的中括号, 引号, 拼接符,去获取最终的值, 可读性太差, 容易绕晕

    方案: 封装一个方法, 传入数组和点分的字符串, 即可获得想要的值

    用法:

    1 let obj = {'aa': {'xx':'cc', '0': 0, '1': '1', '-1': -1}}; 
    2 getObjChild(obj, 'aa.xx');
    3 getObjChild(obj, 'aa.0');
    4 getObjChild(obj, 'aa.-1');

    代码:

     1     //获取嵌套数组/对象中的值
     2     function getObjChild(obj, key, gap='.') {
     3         let tmp = {};
     4         let arr = key.split(gap); //将key拆成数组
     5 
     6         if (obj[arr[0]]) {
     7             tmp = obj[arr[0]];
     8             for (let i=1; i<arr.length; i++) { //逐层进入匹配查找
     9                 let is_found = false;
    10                 if (typeof tmp === 'object') {
    11                     for(let j in tmp) {
    12                         if (j === arr[i]) {
    13                             tmp = tmp[j];
    14                             is_found = true;
    15                             break;
    16                         }
    17                     }
    18                 }
    19 
    20                 if (!is_found) {
    21                     tmp = false;
    22                     console.log('未找到 '+ arr[i]);
    23                     break;
    24                 }
    25             }
    26         } else {
    27             console.log('未找到 '+ arr[0]);
    28             tmp = false;
    29         }
    30 
    31         return tmp;
    32     }
  • 相关阅读:
    UICollectionView的简单使用(一)
    天气预报接口IOS版OC:SmartWeather API中key的计算方法
    IOS下Base64加密
    IOS下DES加密
    IOS的URL中文转码
    CTE Recursion Performance
    走过而立之年的Coder
    iOS多线程编程之锁的理解
    iOS设置PCH文件
    程序员:伤不起的三十岁
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/14266316.html
Copyright © 2011-2022 走看看