📜  js 在数组中查找值 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:01.665000             🧑  作者: Mango

JS 在数组中查找值 - Javascript

在前端开发中,经常需要在数组中查找特定的值。Javascript 提供了多种方法来实现这个需求。在本文中,我们将介绍常用的几种方法。

普通循环

最基础的方法就是通过循环遍历数组,逐一比较每一个元素是否等于目标值。代码示例如下:

let arr = [1, 2, 3, 4, 5];
let targetValue = 3;

for (let i = 0; i < arr.length; i++) {
  if (arr[i] === targetValue) {
    console.log(`目标值 ${targetValue} 在数组中的下标是 ${i}`);
    break;
  }
}

这种方法的时间复杂度为 O(n),在数组较大时会比较慢。

indexOf

Javascript 数组自带的 indexOf 方法可以快速查找目标值在数组中的位置,如果不存在则返回 -1。代码示例如下:

let arr = [1, 2, 3, 4, 5];
let targetValue = 3;

let index = arr.indexOf(targetValue);

if (index !== -1) {
  console.log(`目标值 ${targetValue} 在数组中的下标是 ${index}`);
}

这种方法的时间复杂度为 O(n)。

includes

ES6 引入了 includes 方法,可以更加方便地判断一个数组中是否包含某个元素。代码示例如下:

let arr = [1, 2, 3, 4, 5];
let targetValue = 3;

if (arr.includes(targetValue)) {
  console.log(`目标值 ${targetValue} 在数组中`);
}

这种方法的时间复杂度为 O(n)。

find

find 方法可以查找数组中符合条件的第一个元素,并返回该元素。如果数组中不存在符合条件的元素,则返回 undefined。代码示例如下:

let arr = [1, 2, 3, 4, 5];
let targetValue = 3;

let result = arr.find((value) => {
  return value === targetValue;
});

if (result !== undefined) {
  console.log(`目标值 ${targetValue} 在数组中的值为 ${result}`);
}

这种方法的时间复杂度为 O(n)。

filter

filter 方法可以查找数组中符合条件的所有元素,并返回一个新的数组。如果数组中不存在符合条件的元素,则返回一个空数组。代码示例如下:

let arr = [1, 2, 3, 4, 5];
let targetValue = 3;

let result = arr.filter((value) => {
  return value === targetValue;
});

if (result.length > 0) {
  console.log(`目标值 ${targetValue} 在数组中的下标分别为 ${result.join(',')}`);
}

这种方法的时间复杂度为 O(n)。

总结

以上几种方法都可以用来在 Javascript 数组中查找目标值。不同方法的时间复杂度不同,开发者可以根据具体情况选择最合适的方法。