Rất nhiều thời gian khi viết các hàm khác nhau, chúng tôi có thể muốn tạo phạm vi để làm việc với một số dữ liệu. Một phạm vi đại diện cho dữ liệu trong một mảng hoặc đối tượng có giá trị đầu và cuối.
Rất nhiều ngôn ngữ đã tích hợp sẵn các phương thức để tạo phạm vi, ví dụ:to_a
trong Ruby:
('a'..'e').to_a => ["a", "b", "c", "d", "e"]
JavaScript không có phương pháp tích hợp cụ thể cho việc này, nhưng có nhiều cách để chúng tôi có thể tạo phạm vi. Chúng tôi sẽ cho bạn thấy ba.
_.range () - Lodash
Nếu chúng ta muốn tạo một dải số và muốn chúng nhanh nhất có thể, chúng ta có thể sử dụng Lodash _.range()
sử dụng phương pháp.
Phương thức này trả về một mảng và nhận ba đối số:Đối số đầu tiên cho start trong phạm vi, thứ hai cho end trong phạm vi (tối đa) và thứ ba cho bước , hoặc giá trị tăng / giảm.
_.range(-2); // => [0, -1] _.range(1, 3); // => [1, 2] _.range(1, 10, 4); // => [1, 5, 9]
Lưu ý cách nếu chỉ cung cấp một đối số, nó sẽ tạo ra một phạm vi lên đến số được chỉ định. Ngoài ra, hãy nhớ Lodash là một thư viện JavaScript mà chúng ta cần cài đặt riêng!
Tạo của riêng chúng tôi phạm vi () chức năng.
Nếu chúng ta muốn tiết kiệm một số chi phí, chúng ta có thể tạo hàm phạm vi số của riêng mình. Nó chỉ ra rằng việc tạo ra phạm vi của riêng chúng tôi là khá dễ dàng.
function range(start, end, step = 1){ if(start === end) return [start]; const range = []; for(let i = start; i <= end; i += step){ range.push(i); } return range; } range(1, 10, 4) // => [1, 5, 9] range(1, 10) // => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Điều này rất dễ viết và chúng tôi có thể tránh nhập các thư viện như Lodash chỉ cho một hàm!
81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.
Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.
Tạo hàm không thuộc phạm vi số
Bây giờ bạn có thể hỏi, đối với các phạm vi không phải số, chẳng hạn như các ký tự thì sao? Có một số tùy chọn để chúng tôi triển khai điều đó với JavaScript.
Ở đây chúng ta sẽ sử dụng charCodeAt()
để nhận một số mà sau đó chúng ta sẽ tăng và sau đó đẩy vào một mảng bằng cách sử dụng String.fromCharCode()
, trả về một ký tự từ mã ký tự.
function charRange(start, stop) { const range = []; const end = stop.charCodeAt(0) for (let i = start.charCodeAt(0); i <= end; i++){ range.push(String.fromCharCode(i)); } return range; }; charRange('A','F') // => [ 'A', 'B', 'C', 'D', 'E', 'F' ]
Điều đó dễ dàng hơn bạn nghĩ phải không?
Kết luận
Giờ thì bạn đã biết việc tự tạo phạm vi bằng JavaScript có thể dễ dàng như thế nào. Hãy đảm bảo rằng bạn lưu các chức năng hữu ích này, chúng tôi chắc chắn rằng chúng sẽ được sử dụng vào một lúc nào đó!