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

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

js动态取出循环嵌套的json中的子json数组,组成新的数组,js循环取出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