Việc lập bản đồ đi ba đối số cho chức năng của nó:
- phần tử;
- chỉ mục của phần tử đó trong mảng; và
- chính mảng đó.
Chức năng parseInt
sẽ xem xét hai trong số đầu tiên, xử lý đầu tiên chính xác như chuỗi nhưng xử lý thứ hai làm cơ sở để sử dụng. Khi cơ sở không phải là số không cũng như trong phạm vi bao gồm 2..36
, giá trị trả về là NaN
(1). Nếu bạn đã có một mảng với các yếu tố bốn mươi, bạn cũng sẽ thấy một loạt các NaN
giá trị ở cuối:
0, NaN, 0, 0, 0, ... 0, 0, 0, NaN, NaN
Bạn cũng sẽ nhận được một số kết quả khá lạ nếu chuỗi số là bất cứ điều gì khác hơn không, vì chỉ số mảng sẽ quyết định căn cứ nào được sử dụng để diễn giải nó.
Để thực sự sửa chữa này, bạn có thể chỉ cung cấp một chức năng mà sẽ dịch những gì map
mang đến cho bạn những gì parseInt
hy vọng (bản đồ bản đồ, tôi đoán bạn có thể gọi nó):
function myParseInt(s,r,a) { return parseInt(s,10); }
var arr = new Array(32).join(0).split('').map(myParseInt)
alert(arr)
Bạn cũng có thể muốn xem cách tạo mảng này, nó sẽ thực sự kết thúc dưới dạng mảng có kích thước 31 thay vì 32. Nếu bạn chỉ muốn một mảng gồm '0'
ký tự, bạn có thể sử dụng:
var arr = new Array(32).fill('0')
giả sử bạn có trình duyệt hỗ trợ ECMAScript 2015, là Safari, Firefox và Chrome-máy tính để bàn kể từ thời điểm câu trả lời này.
(1) Một cơ sở của không phải là trường hợp mặc định để xử lý những thứ như tiền tố hex.
Một cơ sở không có ý nghĩa trong hệ thống vị trí thuần túy (trong đó mỗi chữ số được nhân với lũy thừa của cơ sở và tích lũy) vì chữ số được phép duy nhất sẽ là 0
, vì vậy mỗi giá trị địa điểm sẽ không được nhân lên bởi 1n
. Nói cách khác, số duy nhất có thể trong một hệ thống cơ sở một sẽ bằng không.
Căn cứ từ 2
đến 36
do đó hợp lý hơn.
Bạn đã thử 'mảng mới (32) .fill (0);'? –
Bạn có thể quan tâm [Cách hiệu quả nhất để tạo một mảng JavaScript không đầy?] (Http://stackoverflow.com/q/1295584/1529630) – Oriol