Giả sử chúng ta có một mảng 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 tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy. Hàm nên nhóm mảng theo cách sao cho -
-
Các phần tử trong một nhóm có sự khác biệt từ 1 trở xuống
-
Mỗi phần tử nhóm phải 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, sản lượng dự kiến sẽ là -
const output = [ [1, 2, 3], [5, 6, 7], [17, 18] ];
Ví dụ
Mã cho điều 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)); Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[ [ 1, 2, 3 ], [ 5, 6, 7 ], [ 17, 18 ] ]