Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Nhóm mảng đã sắp xếp dựa trên hiệu số giữa phần tử hiện tại và trước đó trong JavaScript


Giả sử chúng ta có một mảng các số nguyên được sắp xếp theo thứ tự tăng dần như sau:

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

Chúng ta cần viết một hàm JavaScript nhận vào một mảng như vậy. Hàm nên nhóm mảng sao cho:

  • Các phần tử trong một nhóm có hiệu số là 1 hoặc nhỏ hơn
  • Mỗi phần tử nhóm nên có nhiều hơn một phần tử để được coi là hợp lệ

Dựa trên các điều kiện trên, đầu ra mong đợi sẽ là:

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

Ví dụ

Code cho việc này sẽ là:

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));

Kết quả

Kết quả hiển thị trong console sẽ là:

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