Hướng dẫn find index of element in array of array javascript - tìm chỉ mục của phần tử trong mảng của mảng javascript

Phương thức findIndex() trả về chỉ số của phần tử đầu tiên trong một mảng thỏa mãn chức năng thử nghiệm được cung cấp. Nếu không có yếu tố nào thỏa mãn chức năng kiểm tra, -1 được trả về.findIndex() method returns the index of the first element in an array that satisfies the provided testing function. If no elements satisfy the testing function, -1 is returned.

Thử nó

Xem thêm Phương thức find(), trả về phần tử đầu tiên thỏa mãn chức năng thử nghiệm (thay vì chỉ mục của nó).

Cú pháp

// Arrow function
findIndex((element) => { /* … */ })
findIndex((element, index) => { /* … */ })
findIndex((element, index, array) => { /* … */ })

// Callback function
findIndex(callbackFn)
findIndex(callbackFn, thisArg)

// Inline callback function
findIndex(function (element) { /* … */ })
findIndex(function (element, index) { /* … */ })
findIndex(function (element, index, array) { /* … */ })
findIndex(function (element, index, array) { /* … */ }, thisArg)

Thông số

callbackFn

Một hàm để thực thi cho mỗi phần tử trong mảng. Nó sẽ trả về một giá trị sự thật để chỉ ra một yếu tố phù hợp đã được tìm thấy.

Hàm được gọi với các đối số sau:

element

Phần tử hiện tại được xử lý trong mảng.

index

Chỉ số của phần tử hiện tại được xử lý trong mảng.

array

Mảng findIndex() đã được kêu gọi.

function isPrime(element) {
  if (element % 2 === 0 || element < 2) {
    return false;
  }
  for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
    if (element % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)
1 Tùy chọnOptional

Giá trị để sử dụng là

function isPrime(element) {
  if (element % 2 === 0 || element < 2) {
    return false;
  }
  for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
    if (element % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)
2 khi thực hiện callbackFn. Xem phương pháp lặp.

Giá trị trả về

Chỉ số của phần tử đầu tiên trong mảng vượt qua bài kiểm tra. Nếu không,

function isPrime(element) {
  if (element % 2 === 0 || element < 2) {
    return false;
  }
  for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
    if (element % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)
4.

Sự mô tả

findIndex() là một phương pháp lặp. Nó gọi hàm callbackFn được cung cấp một lần cho mỗi phần tử theo một mảng theo thứ tự chỉ số tăng dần, cho đến khi callbackFn trả về giá trị sự thật. findIndex() sau đó trả về chỉ số của phần tử đó và dừng lặp lại qua mảng. Nếu callbackFn không bao giờ trả về giá trị sự thật, findIndex() trả về

function isPrime(element) {
  if (element % 2 === 0 || element < 2) {
    return false;
  }
  for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
    if (element % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)
4.

callbackFn được gọi cho mọi chỉ mục của mảng, không chỉ các chỉ số có giá trị được gán. Các khe trống trong các mảng thưa thớt hoạt động giống như

console.log([1, , 3].findIndex((x) => x === undefined)); // 1
3.

findIndex() không làm biến đổi mảng mà nó được gọi, nhưng hàm được cung cấp như callbackFn có thể. Tuy nhiên, lưu ý rằng độ dài của mảng được lưu trước khi gọi đầu tiên của callbackFn. Vì vậy:

  • callbackFn sẽ không truy cập bất kỳ yếu tố nào được thêm vào ngoài độ dài ban đầu của mảng khi cuộc gọi đến findIndex() bắt đầu.
  • Các thay đổi đối với các chỉ mục đã được truy cập không khiến callbackFn được gọi lại trên chúng.
  • Nếu một phần tử hiện có, chưa được liên kết của mảng được thay đổi bởi callbackFn, giá trị của nó được chuyển cho callbackFn sẽ là giá trị tại thời điểm phần tử đó được truy cập. Các yếu tố bị xóa được truy cập như thể chúng là
    console.log([1, , 3].findIndex((x) => x === undefined)); // 1
    
    3.

CẢNH BÁO: Sửa đổi đồng thời của loại được mô tả ở trên thường xuyên dẫn đến mã khó hiểu và thường được tránh (ngoại trừ trong các trường hợp đặc biệt). Concurrent modifications of the kind described above frequently lead to hard-to-understand code and are generally to be avoided (except in special cases).

Phương pháp findIndex() là chung chung. Nó chỉ mong đợi giá trị

function isPrime(element) {
  if (element % 2 === 0 || element < 2) {
    return false;
  }
  for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
    if (element % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)
2 có thuộc tính
const arrayLike = {
  length: 3,
  0: 2,
  1: 7.3,
  2: 4,
};
console.log(
  Array.prototype.findIndex.call(arrayLike, (x) => !Number.isInteger(x)),
); // 1
5 và các thuộc tính được khóa.

Ví dụ

Tìm chỉ mục của một số nguyên tố trong một mảng

Ví dụ sau trả về chỉ mục của phần tử đầu tiên trong mảng là số nguyên tố hoặc

function isPrime(element) {
  if (element % 2 === 0 || element < 2) {
    return false;
  }
  for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
    if (element % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)
4 nếu không có số nguyên tố.

function isPrime(element) {
  if (element % 2 === 0 || element < 2) {
    return false;
  }
  for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
    if (element % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)

Sử dụng FindIndex () trên các mảng thưa thớt

Bạn có thể tìm kiếm

console.log([1, , 3].findIndex((x) => x === undefined)); // 1
3 trong một mảng thưa thớt và nhận chỉ mục của một khe trống.

console.log([1, , 3].findIndex((x) => x === undefined)); // 1

Gọi FindIndex () trên các đối tượng không phải là

Phương thức findIndex() đọc thuộc tính

const arrayLike = {
  length: 3,
  0: 2,
  1: 7.3,
  2: 4,
};
console.log(
  Array.prototype.findIndex.call(arrayLike, (x) => !Number.isInteger(x)),
); // 1
5 của
function isPrime(element) {
  if (element % 2 === 0 || element < 2) {
    return false;
  }
  for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
    if (element % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)
2 và sau đó truy cập vào từng chỉ mục số nguyên.

const arrayLike = {
  length: 3,
  0: 2,
  1: 7.3,
  2: 4,
};
console.log(
  Array.prototype.findIndex.call(arrayLike, (x) => !Number.isInteger(x)),
); // 1

Thông số kỹ thuật

Sự chỉ rõ
Đặc tả ngôn ngữ Ecmascript # sec-array.prototype.find Index
# sec-array.prototype.findindex

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

Có một chỉ mục cho các mảng?

Indexof (mảng, đối tượng, int32) tìm kiếm đối tượng được chỉ định trong một loạt các phần tử của mảng một chiều và trả về chỉ số xuất hiện đầu tiên của nó.Phạm vi mở rộng từ một chỉ mục được chỉ định đến cuối mảng. Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of its first occurrence. The range extends from a specified index to the end of the array.

Indexof có hoạt động trên mảng 2D không?

Bạn không thể sử dụng indexof để thực hiện các mảng phức tạp (trừ khi bạn tuần tự hóa nó làm cho mọi thứ mỗi lần phối hợp thành các chuỗi), bạn sẽ cần sử dụng một vòng lặp (hoặc trong khi) để tìm kiếm tọa độ đó trong mảng đó giả sử bạn biết định dạng của mảng (Trong trường hợp này là 2D). (unless you serialize it making everything each coordinate into strings), you will need to use a for loop (or while) to search for that coordinate in that array assuming you know the format of the array (in this case it is 2d).

Sự khác biệt giữa FindIndex và Indexof trong JavaScript là gì?

FindIndex - Trả về chỉ mục của phần tử đầu tiên trong mảng trong đó vị ngữ là đúng và -1 nếu không. Indexof - Trả về chỉ số của lần xuất hiện đầu tiên của một giá trị trong một mảng. indexOf - Returns the index of the first occurrence of a value in an array.

FindIndex trở lại là gì?

Phương thức FindIndex () trả về chỉ số của phần tử đầu tiên trong một mảng thỏa mãn chức năng thử nghiệm được cung cấp.Nếu không có yếu tố nào thỏa mãn chức năng kiểm tra, -1 được trả về.the index of the first element in an array that satisfies the provided testing function. If no elements satisfy the testing function, -1 is returned.