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     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM