js动态取出循环嵌套的json中的子json数组,组成新的数组,js循环取出json嵌套json组成新数组

6 篇文章 0 订阅
4 篇文章 1 订阅

在项目中要用到json解析,有以下的json数组

其中replyLeaveWords为嵌套的子json数组,可以一直循环嵌套下去

我需要取出这些嵌套的子json数组,和外面的主json数组再组成一个新的json数组

于是找到下面两种方式:

//js动态取出json嵌套子json数组,组成新的数组

//方法一

function parseData(data) {

var lw = [];

var datas = data ;  // 此处的datas为上述数据源

var len=datas.length;

//主json数组的长度len,循环遍历如果下面的replyLeaveWords字段有数组,就遍历所有的数组,增加主json数组的长度就是len+j,j为子json数组的遍历数,把遍历出的子json数组依次加入新的数组,最后push进最后的数组

            for(var i = 0; i < len; i++){

                 var item = datas[i] ;

                 if(item.replyLeaveWords && item.replyLeaveWords.length != 0){

                     var child = item.replyLeaveWords ;

                        for(var j = 0; j < child.length; j++){

                            datas[len + j] = child[j] ;

                        }

                        len = datas.length ;

                 }

                 lw.push(item);

            }

            console.log("解析后的数据:"+lw);

return lw;

}

//js动态取出json嵌套子json数组,组成新的数组

//方法二

//与方法一同样的原理,使用forEach简化代码

function searchParentElementArrays (jsond) {

  const res = [];

  var jsondata=jsond;

  const parsejson = (jsondata, arr) => jsondata.forEach(val => (val.replyLeaveWords && val.replyLeaveWords.length!=0) ? f(val.replyLeaveWords, [...arr, val]) : res.push([...arr, val]))

  parsejson(jsondata, []);

  console.log("解析前:"+jsondata);

  console.log("解析后:"+res);

  return res;

}

最终出来结果,有项目用到的只需改变嵌套的字段值即可,我的是replyLeaveWrods

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值