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

หา Index ทั้งหมดของค่าต่ำสุดในอาร์เรย์ - JavaScript

หา Index ทุกตำแหน่งของค่าต่ำสุด (Minimum Value) ในอาร์เรย์

ตัวอย่าง

[1, 2, 3, 4, 1, 7, 8, 9, 1] → Min: 1 → Indices: [0, 4, 8]

ตัวอย่างโค้ด

const minArray = arr => {
  const min = Math.min(...arr);
  const res = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === min) res.push(i);
  }
  return res;
};

console.log(minArray([1, 2, 3, 4, 1, 7, 8, 9, 1]));

ผลลัพธ์

[ 0, 4, 8 ]

วิธีแบบ Reduce (Single Pass)

const minArray = arr => 
  arr.reduce((acc, val, i) => {
    if (val < acc.min) return { min: val, indices: [i] };
    if (val === acc.min) acc.indices.push(i);
    return acc;
  }, { min: Infinity, indices: [] }).indices;

Single Pass O(n) หา Min และเก็บ Index พร้อมกัน