js获取嵌套数组,嵌套对象的值
2023-09-27 14:21:16 时间
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 }
相关文章
- python使用execjs执行含有document、window等对象的js代码,使用jsdom解决
- JS 数组去重(数组元素是对象的情况)
- 图解Js event对象offsetX, clientX, pageX, screenX, layerX, x区别
- 判断 JS 中对象的类型
- vue.js:使用v-bind通过JSON绑定多个class案例
- JS中事件、事件绑定、事件对象、事件冒泡、事件委派、事件传播、常用事件等
- JS对象迭代v-for
- Vue中通过highlight.js实现代码高亮
- jsonArray与 jsonObject区别与js取值
- js中 给json对象添加属性和json数组添加元素
- 为什么js的"关联数组"不能转成json字符串而对象可以?【转】
- js获取textaera对象(object)的值
- js 将json字符串转换为json对象的方法解析
- js--对象转数组
- 原生js实现tab栏切换
- TSC的分歧导致Node.js分支
- Sublime JS语法检查配置
- 怎么防止同事用Evil.js的代码投毒
- JS--Array.from() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例
- js es6遍历对象的6种方法
- vuejs2.0使用Sortable.js实现的拖拽功能
- JS异步编程之Generator