为了账号安全,请及时绑定邮箱和手机立即绑定

js 多层嵌套的数组,取出最后一层的数据?

js 多层嵌套的数组,取出最后一层的数据?

泛舟湖上清波郎朗 2019-03-22 15:14:10
需要获取到isCheck = true 的所有id的集合list: [{  id: '1',  isCheck: false,  children: [{    id: '1-1',    isCheck: false,    children: null  }, {    id: '1-2',    isCheck: true,    children: null  }]}, {  id: '2',  isCheck: false,  children: [{    id: '2-1',    isCheck: true,    children: null  }]}, {  id: '3',  isCheck: true,  children: null}]想到用递归算法,把数组扁平化降级,可是获取到的数据不对,希望获取到数据为['1-2', '2-1', '3']  steamroller: function (arr) {    let newArr = []    let flat = function (item) {      for (var i = 0; i < item.length; i++) {        if (Array.isArray(item[i].children)) {          flat(item[i])        } else {          newArr.push(item[i])        }      }    }    flat(arr)    return newArr  }求助求助!
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

const result = [],

  getId = arr => {

    arr.forEach(v => {

        v.isCheck && result.push(v.id);

        if (v.children instanceof Array) {

            getId(v.children)

        }

    });

}

getId(list);

console.log(result) //["1-2", "2-1", "3"]

递归一下


查看完整回答
反对 回复 2019-03-25
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

你是想要获取到所有的 children 下面的 id?


function funEach(data){

    var arr = new Array();                //    准备空数组存放

    /*    第一层是索引数组 */

    for(var i = 0;i < data.length;i++){

        /*   该判断通过,说明下面具有值     */

       if(data[i]['children'][0] != undefined){

           var l = data[i]['children'][0];            //    准备个临时变量

           for(var iOne = 0;iOne < l.length;i++){

               arr[] = l['id'];

           }

       }

    }

    return arr;

}

嗯,按我逻辑来想的话应该是没问题的。


查看完整回答
反对 回复 2019-03-25
  • 3 回答
  • 0 关注
  • 3644 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信