分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

for...in循环取Json数据

发布时间:2023-09-06 01:45责任编辑:苏小强关键词:暂无标签
 ?var result = { ??????"Tables":{ ??????????"B2B_DS_ORDERMX0":{ ??????????????"ordernum":"tables-0[0] 未定,int,10", ??????????}, ??????????"B2B_DS_ORDERHZ1":{ ??????????????"ordernum":"tables-1[0] 未定,int,10", ??????????????"hasChild":{"type":"tables-1[1]","value":"12"} ??????????} ??????}, ??????"Json":{ ??????????"_id" : "Json-0[0]订单ID,objectid,32", ??????????"goodsList" : ??????????{ ??????????????"goodsId" : "Json-1[0]未定,int,10" ??????????} ??????} ??}

以上result为一段json格式代码,要求:分别输出Tables和Json,若Tables和Json有子集,则要包含字段"expanded":true,"children":[子集],一直循环到无子集则包含字段"leaf":true,一开始无子集,则直接"leaf":true

思路分析:

for/in 语句循环遍历对象的属性。 
js中获取key得到某对象中相对应的value的方法:obj.key 
js中根据动态key得到某对象中相对应的value

对象的属性值存在子集,若为数组/对象,则typeof == "object",若不存在子集,则为字符串typeof == "string",所以只要通过循环判断对象属性值的类型,即可知道是否存在子集

解决方法:

 1 ?function makearr(jsonarr){ 2 ????????let arr = []; 3 ?4 ????????for(let i in jsonarr){ 5 ??????????// ??console.log(jsonarr[i]); 6 ?7 ????????????if(typeof jsonarr[i] == "object"){ 8 ????????????????var ret = { 9 ????????????????????"text":i,10 ????????????????????"expanded":true,11 ????????????????????"field":i12 ????????????????};13 ????????????????ret.children = makearr(jsonarr[i]);14 15 ????????????}else{16 ????????????????let _arr = jsonarr[i].split(",");17 ????????????????var ret = {18 ????????????????????"text":i,19 ????????????????????"leaf":true,20 ????????????????????"field":i21 ????????????????};22 ????????????}23 ????????????arr.push(ret);24 ????????}25 26 ????????return arr;27 ????}28 29 30 var _arr1 = makearr(result.Tables);31 console.log(_arr1);32 var _arr2 = makearr(result.Json);33 console.log(_arr2);

 输出结果:

for...in循环取Json数据

原文地址:https://www.cnblogs.com/ss977/p/8545259.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved