首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从嵌套数组中查找数据?

从嵌套数组中查找数据可以通过递归算法来实现。递归算法是一种自我调用的算法,可以用于解决问题的分解和求解。

具体步骤如下:

  1. 定义一个函数,接受两个参数:目标数据和嵌套数组。
  2. 遍历嵌套数组的每个元素。
  3. 如果当前元素是目标数据,则返回该元素。
  4. 如果当前元素是数组,则递归调用函数,将当前元素作为嵌套数组参数传入。
  5. 如果当前元素不是目标数据也不是数组,则继续遍历下一个元素。
  6. 如果遍历完所有元素都没有找到目标数据,则返回null或者其他指定的默认值。

这种方法可以处理任意层级的嵌套数组,并且可以适用于不同类型的数据。

以下是一个示例代码:

代码语言:txt
复制
function findData(target, nestedArray) {
  for (let i = 0; i < nestedArray.length; i++) {
    const current = nestedArray[i];
    if (Array.isArray(current)) {
      const result = findData(target, current);
      if (result !== null) {
        return result;
      }
    } else if (current === target) {
      return current;
    }
  }
  return null;
}

// 示例用法
const nestedArray = [1, [2, [3, 4]]];
const target = 3;
const result = findData(target, nestedArray);
console.log(result); // 输出 3

这个算法的时间复杂度是O(n),其中n是嵌套数组中的元素个数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何查找递增连续数组缺失的数字

在一个长度为n的递增数组,数组中元素范围是0 ~ n-1,如何在这个递增连续数组查找缺失的数字? 分析下: 1. 排序数组的搜索算法,首先想到的就是二分法查找 2....丢失的数字之前的左子数组:nums[m] = m, 需要找到第一个nums[m] > m的数组索引值即可....移动边界指针 Nums[3] = 3,左指针右移,同时,已经知道了m指针位置,指针值与元素值是相同的,查找值一定是在[m+1,r]区间中,所以左指针移动到m+1位置....继续计算m指针值,m= (l + r)/2=(5 + 5)/2=5; 这时发现左,,右三指针都指向了num[4], 但4并不是我们想要的值....综上,对于有序数组查找,一般都会使用二分法查找.在查找数据的时候,注意左右边界指针的移动.以及遍历标记(l<=j)即可.

3.1K21
  • 查找数组重复的数字

    题目来源于《剑指Offer》的面试题3:找出数组重复的数字。   // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。...数组某些数字是重复的,但不知道有几个数字重复了,   // 也不知道每个数字重复了几次。请找出数组任意一个重复的数字。...此处介绍自己的一个做法,以空间换时间,通过新建数组来实现快速查找,具体做法是新建长度为length的数组newArray,初始化值为-1;将numbers数组的值依次作为newArray的下标和对应的值为...: (输出) 数组的一个重复的数字 // 返回值: // true - 输入有效,并且数组存在重复的数字 // false - 输入无效,或者数组没有重复的数字...numbers, sizeof(numbers) / sizeof(int), duplications, sizeof(duplications) / sizeof(int), true); } // 数组存在多个重复的数字

    4K60

    嵌套结构取值时如何编写兜底逻辑

    嵌套结构取值时如何编写兜底逻辑 github总基地:http://www.github.com/dashnowords/blogs 博客园地址:《大史住在大前端》原创博文目录 掘金地址:https...= [] } = b || {}; a.map(item => { item.headerTpl = buildHeader(item); }); 问题分析: 对a解构时赋予的默认值(空数组...• 路径中有null或undefined时,即使有后续取值路径,也不会报错,而是返回默认值 • 如果取到的值为null,则返回null(不会触发默认值),所以对于期望类型为数组类型的,下一步如果想调用原生数组方法...console.log(result5); // defaultValue console.log(result6); // defaultValue 方案3——利用函数式编程实现get方法 原文可见:如何优雅安全地在深层数据结构取值..._a$b$c$d : "defaultValue"; 基本逻辑可以按括号内往外看,并不复杂,就是每次取属性都对undefined和null进行了容错处理。

    2.9K10

    如何高效的数组数据生成树状层级数组

    任何无限极分类都会涉及到创建一个树状层级数组顶级分类递归查找子分类,最终构建一个树状数组。如果分类数据是一个数组配置文件,且子类父类id没有明确的大小关系。...那么我们如何高效的从一个二维数组构建我们所需要的树状结构呢。 假设数据源如下: ? 方案1 : ? 每次递归都要遍历所有的数据源。时间复杂度N^2 方案2 : ?...分析: 每次递归循环内部只遍历指定父分类下的数据。加上前期数据准备,整个时间复杂度Nx2 测试 生成测试数据 ?...对两种方式使用相同的5000个数据,分别测试100次,两种方式100次执行总时间如下(单位s): float(96.147500038147) float(0.82804679870605) 可以看出相差的不是一点点...递归调用虽然会让程序简介,阅读方便,但是数据多的时候容易出现超出最大调用栈的情况,同时内存也会持续上升。 还有什么其他的方案呢?

    2.6K10

    PHPHashtable 如何优化数组查找和排序

    PHPHashtable 如何优化数组查找和排序然而,当数组存储的数据量变得非常大时,普通的数组查找和排序操作就会非常缓慢,给程序的性能带来了严重的影响。...PHPHashtable 是一种基于哈希表算法实现的高效数据结构,它可以优化数组查找和排序操作。下面,我们来详细了解一下 PHPHashtable 的实现原理以及如何使用它来优化数组操作。...哈希表是一种通过哈希函数将一组数据映射到固定大小的数组数据结构。而 PHPHashtable 就是将这个数据结构应用到 PHP 数组,从而实现了高效的查找和排序操作。...查找元素:使用 get 方法 PHPHashtable 查找元素:Optional::ofNullable($hashtable->get('key'))->ifPresent(function (...删除元素:使用 remove 方法 PHPHashtable 删除元素:$hashtable->remove('key');三、 总结PHPHashtable 可以极大地提高程序处理大量数组数据的效率

    13730

    在排序数组查找数字

    在排序数组查找数字 题目1:数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3出现了4次,因此输出4....思路: 2分查找数组的第一个k: 1. 如果中间数字大于k,那么k只可能出现在前半段 2. 如果中间数字小于k,那么k只可能出现在后半段 3....一个长度为n-1的递增排序数组的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且仅有一个数字不在该数组,请找出这个数字。...思路:因为数组有序,因此数组开始的一些数字与它们的下标相同。如果不在数组的那个数字记为m,那么所有比m小的数字下标都与它们的值相同。由于m不在数组,m+1的下标正好是m。...如果中间元素的值与下标相等,则查找右边。 2. 如果中间元素的值与下标不相等,并且前面一个元素的下标与值正好相等,则这个下标就是数组缺失的数字。 3.

    3.7K20

    如何在无序数组查找第K小的值

    如题:给定一个无序数组如何查找第K小的值。...例子如下: 在一个无序数组查找 k = 3 小的数 输入:arr[] = {7, 10, 4, 3, 20, 15} 输出:7 在一个无序数组查找 k = 4 小的数 输入:arr[] = {7...:O(NK) (3)使用大顶堆,初始化为k个值,然后后面k+1开始,依次读取每个值,判断当前的值是否比堆顶的值小,如果小就移除堆顶的值,新增这个小的值,依次处理完整个数组,取堆顶的值就得到第k小的值。...(2)给定一个大小为n数组,如果已知这个数组,有一个数字的数量超过了一半,如何才能快速找到该数字?...下面我们看下,从无序数组如何查找第K小的值,也就是按照上面第四种思路,实现的代码如下: public class KthSmallest { public static int quickSortFindRaidx

    5.8K40

    iOS开发·runtime+KVC实现多层字典模型转换(多层数据:模型嵌套模型,模型嵌套数组数组嵌套模型)

    本文实验Demo传送门:DictToModelDemo 前言:将后台JSON数据的字典转成本地的模型,我们一般选用部分优秀的第三方框架,如SBJSON、JSONKit、MJExtension、YYModel...思路2:利用运行时,遍历模型中所有属性,根据模型的属性名,去字典查找key,取出对应的值,给模型的属性赋值,然后就完成了字典转模型的操作。...NSMutableArray array]; /* 遍历所有属性 */ for (unsigned int i = 0; i < outCount; i++) { /* 数组取得属性...NSObject (EnumArr) /* * 把字典中所有value给模型属性赋值, * KVC:遍历字典中所有key,去模型查找 * Runtime:根据模型属性名去字典查找对应value...2.3 对2.1的改进:2.1无法对多层数据进行转换 思路:可以模仿2.2的递归,对2.1进行改进:模型,除了为数组属性添加数组元素对应的类名映射字典,还要为模型属性对应的类名添加映射字典。

    2.5K10

    数据结构与算法-二维数组查找

    题目:二维数组查找 在一个二维数组,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组是否含有该整数。...例如下面的二维数组就是每行、每列都递增排序。如果在这个数组查找数字 7,则返回 true;如果查找数字 5,由于数组不含有该数字,则返回 false。 ?...代码实现 测试用例: 要查找的数在数组查找的数字不在数组(大于数组中所有的值,小于数组中所有的值,在某两个数字之间) 空数组 # -*- coding:utf-8 -*- class Solution...else: # 当右上角的值比目标值小,就去掉这一行 row += 1 return found def test1(f): # 查找的数在数组...target = 7 arr = [[]] assert f.Find(target, arr) == False def test3(f): # 查找的数不在数组 target

    1K20

    算法-二维数组查找

    问题: 在一个二维数组,每一行元素都按照从左到右递增的顺序排序,每一列元素都按照从上到下递增的顺序排序。实现一个查找功能的函数,函数的输入为二维数组和一个整数,判断数组是否含有该整数。...要查找数组7在不在数组内,根据前人总结出来的规律,我们可以这样做: 选择数组的右上角的点开始比较,此时该值为9,9>7,同时9还是第四列最小的数字,那么这意味着,第四列都不可能找到7,于是我们可以直接删除第四列...如果相等的话,查找就结束了~~~ 所以无论是哪一种情况,都可以让我们删除一个行或一个列,下一次要比较的那个值就是删除后的二维数组的右上角的值,总之永远在用右上角的值在比较。...matrix[row * columns + column]不就是对应二维数组的第row行,第column列的那个数么。...注意row和column是0开始的。

    1.5K100
    领券