账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue递归查找id对应的对象
    41
    0

    将递归得到的对象push到数组中

    let selections = [];
    for (let leaf of this.tree) {
        let result = this.recursion(this.items, leaf);
        selections.push(result);
     }

    递归函数

    recursion(data, id) {
          let result;
          if (!data) {
            return;
          }
          for (var i = 0; i < data.length; i++) {
            let item = data[i];
            if (item.id === id) {
              result = item;
              break;
            } else if (item.children && item.children.length > 0) {
              result = this.recursion(item.children, id);
            }
          }
          console.log(result);
          return result;
        },

    this.items为树结构的数据

    items: [
            {
              id: 1,
              name: 'Vuetify Human Resources',
              children: [
                {
                  id: 2,
                  name: 'Core team',
                  children: [
                    {
                      id: 201,
                      name: 'John'
                    },
                    {
                      id: 202,
                      name: 'Kael'
                    },
                    {
                      id: 203,
                      name: 'Nekosaur'
                    },
                    {
                      id: 204,
                      name: 'Jacek'
                    },
                    {
                      id: 205,
                      name: 'Andrew'
                    }
                  ]
                },
                {
                  id: 3,
                  name: 'Administrators',
                  children: [
                    {
                      id: 301,
                      name: 'Ranee'
                    },
                    {
                      id: 302,
                      name: 'Rachel'
                    }
                  ]
                },
                {
                  id: 4,
                  name: 'Contributors',
                  children: [
                    {
                      id: 401,
                      name: 'Phlow'
                    },
                    {
                      id: 402,
                      name: 'Brandon'
                    },
                    {
                      id: 403,
                      name: 'Sean'
                    }
                  ]
                }
              ]
            },
            {
              id: 5,
              name: 'Example',
              children: [
                {
                  id: 501,
                  name: 'qaz'
                }
              ]
            },
            {
              id: 6,
              name: 'Qdd',
              children: [
                {
                  id: 601,
                  name: 'yui'
                }
              ]
            }
          ],

    tree为树选中的数据[201,202,203]
    在递归中我想要得到id所在的对象,在第一个方法中push到数组中形成一个数组集合,现在递归方法出现了问题得到的result为undefined,请各位帮我看下?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • ┆щō夠làㄙ┆ 普通会员 1楼

      在Vue中,你可以使用递归来查找id对应的对象。以下是一个简单的例子:

      ```javascript export default { data() { return { items: [ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }, { id: 3, name: 'Item 3' }, { id: 4, name: 'Item 4' }, { id: 5, name: 'Item 5' }, { id: 6, name: 'Item 6' } ] }; }, methods: { findItemById(id) { if (!this.items || !this.items[id]) { return null; }

        const item = this.items[id];
        if (item && item.id === id) {
          return item;
        }
      
        return this.findItemById(id);
      }
      

      } }; ```

      在这个例子中,我们定义了一个数据结构items,其中包含了多个对象,每个对象都有一个唯一的id属性。我们还定义了一个方法findItemById,它接受一个id参数,并在items数组中查找该id对应的对象。如果找到了,就返回这个对象;如果没有找到,就递归地查找下一个id

      注意,这个例子中的递归查找是基于深度优先搜索的,如果items数组的深度很深,可能会非常慢。在实际使用中,你可能需要使用更复杂的数据结构或算法来提高查找速度。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部