Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số. Các hàm nên trả về một mảng con gồm hai phần tử liền kề từ mảng ban đầu có tổng là mảng nhỏ nhất trong số tất cả các cặp liền kề của mảng.
Nếu độ dài của mảng nhỏ hơn 2, chúng ta phải trả về boolean false.
Ví dụ:Nếu mảng đầu vào là -
const arr = [41, 44, -12, 13, -23, 1, 5, -4, 2, 2];
Ở đây, tổng của cặp [-23, 1] là -22 là giá trị nhỏ nhất đối với bất kỳ hai phần tử liền kề nào của mảng, vì vậy hàm sẽ trả về [-23, 1]
Mã cho điều này sẽ là -
const arr = [41, 44, -12, 13, -23, 1, 5, -4, 2, 2]; const leastSum = arr => { if(arr.length <= 2){ return false; }; const creds = arr.reduce((acc, val, ind) => { let { smallest, startIndex } = acc; const next = arr[ind+1] ; if(!next){ return acc; } const sum = val + next; if(sum < smallest){ startIndex = ind; smallest = sum; }; return { startIndex, smallest }; }, { smallest: Infinity, startIndex: -1 }); const { startIndex } = creds; return [arr[startIndex], arr[startIndex + 1]]; }; console.log(leastSum(arr));
Sau đây là kết quả trên bảng điều khiển -
[-23, 1]