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

js+在数组搜索

在JavaScript中,数组搜索是指查找数组中是否存在某个特定的元素,并返回其索引位置。如果数组中不存在该元素,则返回 -1。

以下是在JavaScript中进行数组搜索的一些常见方法:

1. 使用 indexOf() 方法

indexOf() 方法用于查找数组中指定元素的第一个匹配项的索引。如果未找到该元素,则返回 -1。

示例代码:

代码语言:txt
复制
let arr = [1, 2, 3, 4, 5];
let index = arr.indexOf(3);
console.log(index); // 输出 2

2. 使用 lastIndexOf() 方法

lastIndexOf() 方法与 indexOf() 类似,但它返回数组中指定元素的最后一个匹配项的索引。

示例代码:

代码语言:txt
复制
let arr = [1, 2, 3, 4, 5, 3];
let index = arr.lastIndexOf(3);
console.log(index); // 输出 5

3. 使用 includes() 方法

includes() 方法用于判断数组是否包含指定的元素,返回布尔值 truefalse

示例代码:

代码语言:txt
复制
let arr = [1, 2, 3, 4, 5];
let hasThree = arr.includes(3);
console.log(hasThree); // 输出 true

4. 使用 find() 方法

find() 方法用于查找数组中满足提供的测试函数的第一个元素的值。如果没有找到,则返回 undefined

示例代码:

代码语言:txt
复制
let arr = [1, 2, 3, 4, 5];
let found = arr.find(element => element > 3);
console.log(found); // 输出 4

5. 使用 filter() 方法

filter() 方法创建一个新数组,其包含通过所提供函数实现的测试的所有元素。

示例代码:

代码语言:txt
复制
let arr = [1, 2, 3, 4, 5];
let filteredArr = arr.filter(element => element > 3);
console.log(filteredArr); // 输出 [4, 5]

应用场景:

  • 查找用户输入的数据是否存在于预定义的数组中。
  • 在处理数据集时,查找特定的记录或项。
  • 在算法和数据结构中,实现搜索和排序功能。

注意事项:

  • indexOf()lastIndexOf() 方法在比较元素时使用的是严格相等(===),因此它们不仅比较值,还比较类型。
  • includes() 方法也使用严格相等进行比较。
  • find()filter() 方法允许你使用自定义的测试函数,这提供了更灵活的搜索条件。

希望这些信息能够帮助你更好地理解JavaScript中的数组搜索!

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

相关·内容

必会算法:在旋转有序的数组中搜索

大家好,我是戴先生 今天给大家介绍一下如何利用玄学二分法找出目标值元素 想直奔主题的可直接看思路2 ##题目 整数数组 nums 按升序排列,数组中的值互不相同 在传递给函数之前,nums...在预先未知的某个下标 k(0 数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1...第一个想到的就应该是用二分法试试 下面我们来分析一下 一个增序的数组是这样的 旋转n次之后就是这样的 所以我们的目标就是在这样的数组里边找目标值 可以非常清晰的看到 第二段的所有值都是小于第一段的值...这样思路就非常清晰了 在二分查找的时候可以很容易判断出 当前的中位数是在第一段还是第二段中 最终问题会简化为在一个增序数据中的普通二分查找 我们用数组[1,2,3,4,5,6,7,8,9]举例说明 target...=4的前边 此时,查找就简化为了在增序数据中的查找了 以此类推还有其他四种情况: mid值在第一段,且在目标值的前边 mid值在第二段,且在目标值的前边 mid值在第二段,且在目标值的后边 mid值就是目标值

2.8K20
  • 【奇技淫巧】-- 搜索旋转数组

    假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。...搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。...用题目中给的例子来分析,对于数组[0 1 2 4 5 6 7] 共有下列七种旋转方法: ?...二分搜索法的关键在于获得了中间数后,判断下面要搜索左半段还是右半段,我们观察上面红色加粗的数字都是升序的,由此我们可以观察出规律,如果中间的数小于最右边的数,则右半段是有序的,若中间数大于最右边数,则左半段是有序的...,我们只要在有序的半段里用首尾两个数组来判断目标值是否在这一区域内,这样就可以确定保留哪半边了,代码如下 int search(vector& nums, int target) {

    28530

    搜索旋转排序数组

    题目: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。...搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。...「二分」不是单纯指从有序数组中快速找某个数,这只是「二分」的一个应用。 「二分」的本质是两段性,并非单调性。只要一段满足某个性质,另外一段不满足某个性质,就可以用「二分」。...两段有序值的分布 思路: 二分法: 如上所示我画了个图,其实每次我们在判断中值的时候都会拿到两个跟别是有序的片段,且左端的值是比右端的大的 我们要先根据 nums[mid] 与 nums[l] 的关系判断...mid 是在左段还是右段,接下来再判断 target 是在 mid 的左边还是右边,从而来调整左右边界 l 和 r。

    22510

    搜索旋转排序数组

    题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。...搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。...这道题目不是直接的有序数组,不然就是easy了。 首先要知道,我们随便选择一个点,将数组分为前后两部分,其中一部分一定是有序的。...比如mid在右侧有序部分,即[mid, end] 那么我们只需要判断 target >= mid && target 在右侧有序部分,我们就 可以舍弃左边部分了(start...start, mid] 之间 start = mid + 1; } } else { // [mid, end]有序 // target 在

    41520

    搜索旋转排序数组(leetcode 33)

    1.问题描述 整数数组按升序排列,数组中的值互不相同 。 假设数组在预先未知的某个点上进行了旋转。 如数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2]。...搜索一个给定的目标值,如果数组中存在目标值,则返回它的索引,否则返回 -1 。 算法时间复杂度必须是 O(logn) 级别。...这是因为该数组在预先未知的某个点上进行了旋转,已不再是一个完全的升序数组。 首先理解以下这个旋转特性。...如果 [l, mid-1] 是有序数组,且 target 大小满足 [nums[l],nums[mid]),则将搜索范围缩小至 [l, mid-1],否则在 [mid+1, r] 中寻找。...如果 [mid, r] 是有序数组,且 target 大小满足 (nums[mid],nums[r]],则将搜索范围缩小至 [mid+1, r],否则在 [l, mid-1] 中寻找。

    18220

    每天一道leetcode-74 在二维数组中搜索n

    题目 leetcode-74 在二维数组中搜索一个数 分类(tag):二分查找这一类 英文链接: https://leetcode.com/problems/search-a-2d-matrix/ 中文链接...right=12-1=11,也就是代码6-7行所示; mid是二者去中间值,没毛病,mid=5第10行所示; 难点就在于matrix[mid/n][mid%n]的理解,就是对于一个下标如何确定它在二维数组中的位置...,对于二维数组中,1来说,1是第0个数,第0/4行,3是第一个数,第0/4行,5是第2个数,第0/4行,7是第3个数,第0/4行,10是第4个数,第4/4行,11是5个数,第5/4行........观察规律可知...所以mid的下标对应的二维数组中的数就是matrix[mid/4][mid%4]; 结果展示 ? 5ms的是二分查找的结果,比《剑指offer》还快了2ms。

    87050

    封装数组之包含、搜索和删除元素

    前言:在上一小节中我们已经会了如何获取和如何修改数组中的元素,在本小节中我们将继续学习如何判断某个元素是否在数组中存在、查询出某个元素在数组中的位置、以及删除数组中元素等方法的编写。  ...if (data[i] == e) return true; } return false; } 有时候在查询过程中...,我们不仅想知道是否包含该指定元素,还想是在该元素所在的位置,则我们可以编写一个查找数组中元素e所在的索引的方法。...,内部无须在返回, (2)针对通过索引方式删除的元素需要返回被删除,这是由于用户并不知道自己删除的元素值是什么,我们把被删除的值返回给用户,以便于用户在需要使用时取用。  ...] 在数组头部位置插入元素e: Array: size = 12 , capacity = 20 [-10,0,200,1,2,3,4,5,6,7,8,9] 根据数组索引查找数组元素: 9 修改数组索引位置上元素值

    78920

    LeetCode题目33:搜索旋转排序数组

    原题描述 + 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。...搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。...根据题目描述,旋转是指:在一个排好序的数组中,截取从头部开始的子数组,将其安插到末尾。用这种方式处理升序数组后,一定会变成两个分段后的升序数组,如下图所示。 ?...target要么在保序子数组中,要么在不保序数组中。我们可以通过target与保序数组的关系,来界定搜索范围。...如果target在保序数组中,那么搜索范围将限定在保序数组; 如果target不在保序数组中,那么搜索范围将限定在非保序数组。 ?

    48410

    T11-搜索旋转排序数组

    这是木又陪伴你的第18天 今天分享leetcode第11篇文章,也是leetcode第33题—Search in Rotated Sorted Array(搜索旋转排序数组),地址是:https://leetcode.com...target = 0 Output: 4 Example 2: Input: nums = [4,5,6,7,0,1,2], target = 3 Output: -1 【中文题目】 假设按照升序排序的数组在预先未知的某个点上进行了旋转...( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。...现在时间复杂度限制在O(log n),可以自然地想到用二分查找的变形。...相关文章: T9-寻找旋转排序数组中的最小值 T10-寻找旋转排序数组中的最小值II 给我好看

    36020
    领券