Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Trả về mảng tất cả chỉ số của phần tử nhỏ nhất trong mảng JavaScript

Trả về mảng tất cả chỉ số của phần tử nhỏ nhất trong mảng JavaScript

Giả sử, chúng ta có một mảng số như sau:

const arr = [1,2,3,4,1,7,8,9,1];

Giả sử chúng ta muốn tìm chỉ số của phần tử nhỏ nhất trong mảng. Cho việc này chúng ta có thể đơn giản dùng:

const min = Math.min.apply(Math, arr);
const ind = arr.indexOf(min);

Mã này sẽ thành công đặt ind thành 0, điều này đúng.

Nhưng điều chúng ta muốn đạt được là nếu có nhiều hơn một phần tử nhỏ nhất trong mảng, như trong mảng trên (3 số 1), thì chúng ta nên trả về một mảng chứa tất cả các chỉ số của các phần tử nhỏ nhất.

Vì vậy, với mảng này, kết quả đầu ra mong muốn là:

const ind = [0, 4, 8]

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số và trả về một mảng tất cả các chỉ số của các phần tử nhỏ nhất trong mảng.

Do đó, hãy viết mã cho hàm này:

Ví dụ

Mã thực hiện như sau:

const arr = [1,2,3,4,1,7,8,9,1];
const minArray = arr => {
  const min = arr.reduce((acc, val) => Math.min(acc, val), Infinity);
  const res = [];
  for(let i = 0; i < arr.length; i++){
    if(arr[i] !== min){
      continue;
    };
    res.push(i);
  };
  return res;
};
console.log(minArray(arr));

Đầu ra

Kết quả trong console sẽ là:

[ 0, 4, 8 ]