Hướng dẫn findindex array object javascript - đối tượng mảng findindex 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 chức năng được sử dụng để kiểm tra các phần tử trong mảng.

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.

Cuộc gọi lại phải trả về một giá trị sự thật để chỉ ra một yếu tố thích hợp đã được tìm thấy. Chỉ số của phần tử này sau đó được trả về bởi findIndex().

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 Tùy chọnOptional

Đối tượng tùy chọn để 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)
3 khi thực hiện callbackFn.

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)
5.

Sự mô tả

Phương thức findIndex() thực thi hàm callbackFn một lần cho mọi chỉ mục trong mảng, theo thứ tự tăng dần, cho đến khi nó tìm thấy một trong đó callbackFn trả về giá trị sự thật.

Nếu một phần tử như vậy được tìm thấy, findIndex() ngay lập tức trả về chỉ mục của phần tử. Nếu callbackFn không bao giờ trả về giá trị sự thật (hoặc

console.log([1, , 3].findIndex((x) => x === undefined)); // 1
1 của mảng là
console.log([1, , 3].findIndex((x) => x === undefined)); // 1
2), 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)
5.

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
6.

callbackFn được gọi với ba đối số:

  1. Giá trị của phần tử
  2. Chỉ mục của phần tử
  3. Đối tượng mảng đang đi qua

Nếu một tham số

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 truyền đến findIndex(), nó sẽ được sử dụng làm
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)
3 bên trong mỗi lần gọi của callbackFn. Nếu nó không được cung cấp, thì
console.log([1, , 3].findIndex((x) => x === undefined)); // 1
6 được sử dụng.

Phạm vi của các phần tử được xử lý bởi findIndex() được đặt trước khi gọi đầu tiên của callbackFn. Các yếu tố được gán cho các chỉ mục đã được truy cập hoặc các chỉ mục bên ngoài phạm vi, sẽ không được truy cập bởi callbackFn. callbackFn sẽ không xử lý các yếu tố được nối với mảng sau khi cuộc gọi đến findIndex() bắt đầu. Nếu một phần tử hiện có, không được biết đến 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 findIndex() truy cập chỉ mục của phần tử. Các yếu tố là findIndex()1 vẫn được truy cập.

CẢNH BÁO: Sửa đổi đồng thời loại được mô tả trong đoạn trước thường xuyên dẫn đến mã khó hiểu và thường phải tránh (ngoại trừ trong các trường hợp đặc biệt). Concurrent modification of the kind described in the previous paragraph frequently leads to hard-to-understand code and is 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)
3 có thuộc tính
console.log([1, , 3].findIndex((x) => x === undefined)); // 1
1 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)
5 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
6 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

console.log([1, , 3].findIndex((x) => x === undefined)); // 1
1 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)
3 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