Mô tả vấn đề
Giả sử một hàm toán học được cho bởi:
f(x) = ax² + bx + c
Trong đó a, b và c là ba hằng số.
Chúng ta cần viết một hàm JavaScript nhận vào một mảng các số nguyên đã sắp xếp arr làm đối số đầu tiên, và a, b, c lần lượt là đối số thứ hai, ba, bốn. Hàm phải áp dụng hàm f(x) cho từng phần tử của mảng arr.
Hàm sau đó trả về phiên bản đã sắp xếp của mảng đã biến đổi.
Ví dụ, nếu đầu vào là:
const arr = [-8, -3, -1, 5, 7, 9]; const a = 1; const b = 4; const c = 7;
Thì đầu ra nên là:
const output = [4, 4, 39, 52, 84, 124];
Ví dụ minh họa
Mã thực hiện:
const arr = [-8, -3, -1, 5, 7, 9];
const a = 1;
const b = 4;
const c = 7;
const applyFunction = (arr = [], a = 1, b = 1, c = 1) => {
const apply = (num, a, b, c) => {
const res = (a * (num * num)) + (b * num) + (c);
return res;
};
const result = arr.map(el => apply(el, a, b, c));
result.sort((a, b) => a - b);
return result;
};
console.log(applyFunction(arr, a, b, c));Giải thích mã
Chúng ta đầu tiên duyệt qua mảng để áp dụng hàm f(x) cho từng phần tử bằng map(), sau đó sắp xếp mảng kết quả bằng Array.prototype.sort() và cuối cùng trả về mảng đã sắp xếp.
Đầu ra
Kết quả trong console sẽ là:
[4, 4, 39, 52, 84, 124]