อาร์เรย์: [10, 5, 4, 10, 5, 10, 6] ค่าสูงสุด 10 อยู่ดัชนี 0, 3, 5
ตัวอย่างโค้ด
const arr = [10, 5, 4, 10, 5, 10, 6];
const findGreatestIndices = arr => {
const val = Math.max(...arr);
const greatest = arr.reduce((indexes, element, index) => {
if (element === val) {
return indexes.concat([index]);
} else {
return indexes;
}
}, []);
return greatest;
};
console.log(findGreatestIndices(arr));ผลลัพธ์
[ 0, 3, 5 ]
คำอธิบาย: Math.max(...arr) หาค่าสูงสุด reduce สะสม index ที่ element === max value ใช้ concat เพิ่ม index ใหม่
วิธีอื่น: arr.map((v,i) => v===max ? i : -1).filter(i => i !== -1)