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

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 bằng 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. Đối với điều này, chúng ta có thể đơn giản sử 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 thực sự là 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, như trong mảng trên (3 phần tử), thì chúng ta sẽ trả về một mảng chứa tất cả các chỉ số của 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à -

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.

Do đó, hãy viết mã cho chức năng này -

Ví dụ

Mã cho điều này sẽ là -

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

Đầu ra trong bảng điều khiển sẽ là -

[ 0, 4, 8 ]