Giả sử chúng ta có mảng số như sau:
const arr = [1,2,3,4,1,7,8,9,1];
Muốn tìm chỉ số phần tử nhỏ nhất, ta có thể dùng:
const min = Math.min.apply(Math, arr); const ind = arr.indexOf(min);
Code trên sẽ gán ind = 0, đúng nhưng chưa đủ.
Yêu cầu: nếu có nhiều phần tử nhỏ nhất (như ba số 1 ở trên), trả về mảng chứa tất cả chỉ số của chúng.
Kết quả mong đợi: [0, 4, 8]
Chúng ta cần viết hàm nhận vào mảng số và trả về mảng tất cả chỉ số của phần tử nhỏ nhất.
Ví dụ
Dưới đây là đoạn code:
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));Kết quả
Đoạn code sẽ in ra console:
[ 0, 4, 8 ]