美文网首页
Js 递归查找数组中指定条件的一组对象

Js 递归查找数组中指定条件的一组对象

作者: 码农界四爷__King | 来源:发表于2020-11-18 15:05 被阅读0次

需求:在多维数组中查找指定条件的对象,且取出该对象内容数据;数组数据格式如下:

image

实现:方法一:

 // 递归查找
            getParentId(list, iid) {
                for(let o of list || []) {
                    if(o.category_id == iid) return o
                    const o_ = this.getParentId(o.children, iid)
                    if(o_) return o_
                }
            },
        
            // 使用输入结果
            groupChange(e) {
                var item = this.getParentId(this.categoryList, e)
                console.log(item) // 即item 是需要的结果内容
            },

方法二:

                      /**
             * 递归获取item数据
             * 1. 递归数组,判断内部有没有children属性,如果有的话,再次进入循环 
             * */
            recursive(id, obj) {
                var result = {} // 也可以是全局声明的变量
                obj.forEach(item => {
                    if (item.category_id == id) {
                        result = item
                    }
                    
                    if (item.children) {
                        this.recursive(id, item.children)
                    }
                })
                return result
            }
        
            // 使用结果
            GroupChange(e) {
                 var result = this.recursive(e, this.categoryList)
                 console.log(result)
            },

方法三,

function findBFS(objects, id) {
  const queue = [...objects]
  while (queue.length) {
    const o = queue.shift()
    if (o.uid== id) return o
    queue.push(...(o.children || []))
  }
}

其他:适用于没有子代的简单数组.

需要一个函数,或者一个lodash模块,它可以递归搜索整个数组并返回对象(数组中的项)

findContainingObject(array, uuid) {
    let result = [];
    result = array.filter( item => {
        return item.uuid === uuid
    })
    return result;
}

以上内容仅供参考使用!

相关文章

  • Js 递归查找数组中指定条件的一组对象

    需求:在多维数组中查找指定条件的对象,且取出该对象内容数据;数组数据格式如下: 实现:方法一: 方法二: 方法三,...

  • js 数组操作合集(主要针对对象数组)

    1,根据对象中元素 查找对象数组中对应的元素 2,删除数组中指定对象的元素 并返回删除后的数组 3,js数组实现权...

  • js从一个数组中删除另一个数组中存在的元素

    js 数组的 some 方法:some 方法用于检测数组中元素是否满足指定条件, 通俗点讲: 查找数组中是否有满足...

  • JS文集的目录

    js基础心法 深浅拷贝(递归)深浅拷贝(首层浅拷贝) js 数据处理 数组对象查找的常见操作数组对象去重的常见操作...

  • JavaScript删除数组里的某个元素

    删除数组指定的某个元素 首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为: ...

  • JS删除数组里的某个元素方法

    首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为 Array.prototy...

  • 二分查找及其扩展

    在有序数组中,二分查找是效率较高的查找算法。二分查找一般有递归和迭代 对有序数组查找指定数字在数组中出现的次数//...

  • JS删除数组中的某个元素

    首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为: 然后使用通过得到这个元素...

  • array操作

    首先可以给js的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为: 然后使用通过得到这个元素...

  • 【重学】尾递归,数组查找模拟实现

    大纲尾调用尾递归数组查找指定元素模拟实现:findfindIndextarget, currentTarget,a...

网友评论

      本文标题:Js 递归查找数组中指定条件的一组对象

      本文链接:https://www.haomeiwen.com/subject/tdeciktx.html