Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จัดกลุ่มอาร์เรย์ที่จัดเรียงตามความแตกต่างระหว่างองค์ประกอบปัจจุบันและก่อนหน้าใน JavaScript


สมมติว่าเรามีอาร์เรย์ของจำนวนเต็มเรียงตามลำดับที่เพิ่มขึ้นเช่นนี้ -

const arr = [ 1, 2, 3, 5, 6, 7, 10, 12, 17, 18];

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรจัดกลุ่มอาร์เรย์ในลักษณะที่ −

  • องค์ประกอบภายในกลุ่มมีความแตกต่าง 1 หรือน้อยกว่า

  • องค์ประกอบแต่ละกลุ่มควรมีองค์ประกอบมากกว่าหนึ่งรายการเพื่อให้ถือว่าถูกต้อง

ตามเงื่อนไขข้างต้น ผลลัพธ์ที่คาดหวังจะเป็น −

const output = [
   [1, 2, 3],
   [5, 6, 7],
   [17, 18]
];

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const arr = [ 1, 2, 3, 5, 6, 7, 10, 12, 17, 18];
const groupNear = (arr = []) => {
   const res = [];
   for (let ind = 0; ind < arr.length; ind++) {
      let value = arr[ind];
      if (arr[ind − 1] + 1 === value) {
         res[res.length − 1].push(value);
      } else if (value + 1 === arr[ind + 1]) {
         res.push([value]);
      };
   };
   return res;
};
console.log(groupNear(arr));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

[ [ 1, 2, 3 ], [ 5, 6, 7 ], [ 17, 18 ] ]