Chúng ta có một tập hợp các số nguyên, và một giá trị cần trừ từ tổng của tập hợp. Ví dụ: [4, 5, 6, 7, 8] - 25. Nếu trừ đều từ mỗi số, ta được [-1, 0, 1, 2, 3]. Tuy nhiên, chúng ta không muốn bất kỳ số nào nhỏ hơn 0. Do đó, các số âm sẽ tràn đều vào các số dương còn lại, cho kết quả [0, 0, 1 - 0.333, 2 - 0.333, 3 - 0.333]. Tất cả giá trị âm tràn ĐỀU vào các giá trị dương còn lại.
Chúng ta cần viết một hàm JavaScript nhận vào một mảng số làm đối số thứ nhất và một số tổng làm đối số thứ hai. Hàm sẽ tính mảng đã trừ và phân phối đều và trả về nó.
Ví dụ
Code cho việc này sẽ là:
const arr = [4, 5, 6, 7, 8];
const subtract = (arr, sum) => {
return arr.map((el, index, array) => {
const rem = array.length - index;
const avg = sum / rem;
const toSubtract = Math.min(avg, el);
sum -= toSubtract;
return el - toSubtract;
});
};
console.log(subtract(arr, 25));Kết quả
Kết quả hiển thị trong console sẽ là:
[ 0, 0, 0.666666666666667, 1.666666666666666, 2.666666666666666 ]