Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

หาดัชนีของค่าสูงสุดในอาร์เรย์ (รองรับค่าซ้ำ) - JavaScript

อาร์เรย์: [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)