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

การตรวจสอบอาร์เรย์ที่เพิ่มหรือลดอย่างเคร่งครัด - JavaScript

ตรวจสอบว่าอาร์เรย์เป็น strictly increasing (เพิ่มทุกขั้น) หรือ strictly decreasing (ลดทุกขั้น) เท่านั้น

ตัวอย่าง

[12, 45, 6, 4, 23, 23, 21, 1]  // false (ไม่เพิ่ม/ลดต่อเนื่อง)
[12, 45, 67, 89, 123, 144, 2656, 5657]  // true (เพิ่มต่อเนื่อง)

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

const arr = [12, 45, 6, 4, 23, 23, 21, 1];
const arr2 = [12, 45, 67, 89, 123, 144, 2656, 5657];

const sameSlope = (a, b, c) =>
  (b - a < 0 && c - b < 0) || (b - a > 0 && c - b > 0);

const increasingOrDecreasing = (arr = []) => {
  if (arr.length <= 2) return true;

  for (let i = 1; i < arr.length - 1; i++) {
    if (sameSlope(arr[i - 1], arr[i], arr[i + 1])) {
      continue;
    }
    return false;
  }
  return true;
};

console.log(increasingOrDecreasing(arr));  // false
console.log(increasingOrDecreasing(arr2)); // true

หลักการ

ฟังก์ชัน sameSlope ตรวจสอบว่า 3 จุดติดกันมีความชัน (slope) เครื่องหมายเดียวกัน:

  • ลดต่อเนื่อง: b-a < 0 และ c-b < 0
  • เพิ่มต่อเนื่อง: b-a > 0 และ c-b > 0

ผลลัพธ์

false
true