取出不知多少层级对象中的某一个值

var gData  = [
                {
                    id: "1",
                    name: "测试1",
                    list: [
                        {
                            id: "2",
                            name: "测试1-2",
                            list: []
                        }
                    ]
                },
                {
                    id: "3",
                    name: "测试2",
                    list: [
                        {
                            id: "4",
                            name: "测试2-2",
                            list: []
                        }
                    ]
                },
                {
                    id: "5",
                    name: "测试3",
                    list: [
                        {
                            id: "6",
                            name: "测试3-2-1",
                            list: [
                                {
                                    id: "9",
                                    name: "测试3-2-1-1",
                                    list: []
                                },
                                {
                                    id: "10",
                                    name: "测试3-2-1-2",
                                    list: []
                                },
                                {
                                    id: "11",
                                    name: "测试3-2-1-3",
                                    list: []
                                }
                            ]
                        },
                        {
                            id: "7",
                            name: "测试3-2-2",
                            list: [
                                {
                                    id: "12",
                                    name: "测试3-2-2-1",
                                    list: []
                                },
                                {
                                    id: "13",
                                    name: "测试3-2-2-2",
                                    list: []
                                },
                                {
                                    id: "14",
                                    name: "测试3-2-2-3",
                                    list: []
                                },
                                {
                                    id: "15",
                                    name: "测试3-2-2-4",
                                    list: [
                                        {
                                            id: "16",
                                            name: "测试3-2-2-4-1",
                                            list: null
                                        },
                                        {
                                            id: "17",
                                            name: "测试3-2-2-4-2",
                                            list: null
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            id: "8",
                            name: "测试3-2-3",
                            list: [
                                {
                                    id: "18",
                                    name: "测试3-2-3-1",
                                    list: [
                                        {
                                            id: "19",
                                            name: "测试3-2-3-1-1",
                                            list: null
                                        },
                                        {
                                            id: "20",
                                            name: "测试3-2-3-1-2",
                                            list: null
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ];
            
 			function Get() {
                /**
                 * ! 查看需要查找的值   默认返回所有对象
                 * ! 查找的是 对象 -> 数组 -> 对象 -> 数组 ----- -> 对象(有值 返回)
                 * @param {*} data 数据
                 * @param {*} str 需要查找的
                 * @param {*} opt 配置对象
                 *      oKey: 根据那个 key 的 val 做对比 必填
                 *      sKey: 对象数组中 数组的那个key 必填
                 *      last: 是否只要最后一个   默认 fasle  值 true false
                 *      rKey: 返回的数组中 是全部 还是某一个 key 默认 全部
                 */
                this.GetData = function (data, str, opt) {
                    var dOpt = {
                        last: false,
                        back: "val",
                        rKey: false
                    };
                    var {
                        last,
                        oKey = false,
                        sKey = false,
                        rKey
                    } = Object.assign({}, dOpt, opt);
                    if (!oKey) return "请填写 oKey";
                    if (!sKey) return "请填写 sKey";

                    var g = "";
                    for (let key in data) {
                        var item = data[key];
                        var rItem = rKey ? item[rKey] : [item];
                        if (item[oKey] === str) {
                            g = rItem;
                        }

                        if (item[sKey] && item[sKey].length > 0) {
                            var ggItem = this.GetData(item[sKey], str, opt);
                            if (ggItem) {
                                g = [rItem, ...ggItem];
                            }
                        }
                        if (g) {
                            if (last) {
                                return g.slice(g.length - 1);
                            }
                            return g;
                        }
                    }
                };
            }
          
 let d = new Get();
    let filterData = d.GetData(obj, "4", {
                oKey: "id",
                sKey: "list",
                // rKey: "id",
                last: true
            });
            console.log(filterData);

------------- 2021-02-26 ------------------------

参考

  1. 链接
  2. 链接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值