1. 程式人生 > 實用技巧 >js獲取巢狀陣列,巢狀物件的值

js獲取巢狀陣列,巢狀物件的值

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

原因: 如果陣列或物件是多維的, 嵌套了很多層, 不想用多箇中括號去取值, 因為需要些大量的中括號, 引號, 拼接符, 不太直觀

方案: 封裝一個方法, 轉入陣列和點分的字串, 即可獲得想要的值

用法:

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 }