Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm các chỉ mục có nhiều giá trị nhỏ nhất trong một mảng trong JavaScript

Giả sử chúng ta có một mảng các số như thế này -

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, tức là 1 ở trên.

Đối với điều này, chúng ta có thể chỉ cần sử dụng -

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

Đoạn mã trên sẽ thành công đặt ind thành 0, điều này thực sự chính xác.

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

Vì vậy, đối với mảng này, đầu ra mong muốn của chúng tôi là ba số 1 sau đây được tìm thấy ở chỉ mục 0, 4 và 8 -

const ind = [0, 4, 8]

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một mảng số và trả về một mảng gồm tất cả các chỉ số của các phần tử tối thiểu trong mảng.

Ví dụ

Sau đây là mã -

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

Điều này sẽ tạo ra kết quả sau trong bảng điều khiển -

[ 0, 4, 8 ]