2011-06-03 37 views
5

Trong JavaScript, nếu bạn đặt một mảng có kích thước 5 (var foo = new Array(5);), đây có phải là kích thước ban đầu không? Bạn có thể mở rộng số lượng các phần tử sau khi nó được tạo ra hay không. Có thể làm điều gì đó như thế này không - arr = new Array() và sau đó chỉ cần gán từng phần tử? Cảm ơn trước :-)Kích thước mảng hoạt động như thế nào trong Javascript

Trả lời

5

Có nó chỉ là một kích thước ban đầu, và nó không phải là bắt buộc. Nếu bạn không sử dụng một số duy nhất, bạn có thể điền ngay lập tức.

Việc sử dụng cú pháp [] cũng phổ biến hơn.

var arr = ['something', 34, 'hello']; 

Bạn có thể thiết lập (hoặc thay thế) một chỉ số cụ thể bằng cách sử dụng dấu ngoặc:

arr[0] = "I'm here replacing whatever your first item was"; 

Bạn có thể thêm vào cuối cùng bằng cách sử dụng push:

arr.push('add me'); 

Có thể có hiệu suất nhanh hơn trong một số trình duyệt nếu bạn thực hiện việc này như thế này:

arr[arr.length] = 'add me'; 

Bạn có thể thêm thứ gì đó vào bất kỳ chỉ mục nào.

Bạn có thể loại bỏ một mục hoàn toàn sử dụng mối nối:

arr.splice(0, 1); // remove first item in the array (start at index 0, with 1 being removed) 
+0

Có phải [] giống như một mảng ẩn danh không? – rubixibuc

+0

@rubixibuc: Không, nó là một mảng theo nghĩa đen. –

+0

Sự khác nhau giữa mảng mảng và mảng ẩn danh là gì? (sry nếu đây là một câu hỏi ngớ ngẩn: - /) – rubixibuc

5

Khi bạn đưa ra một mảng mới có kích thước rõ ràng trong javascript (sử dụng new Array(5)), bạn cư mỗi chỉ số có giá trị undefined. Nó thường được coi là thực hành tốt hơn để nhanh chóng sử dụng các mảng đen [] biểu:

var arr = []; 

Sau đó, bạn có thể đẩy các yếu tố mới sử dụng push()

var arr = []; 
arr.push('first value'): 
arr.push('second value'): 

Kiểm tra các tài liệu Mảng MDC cho biết thêm: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array

+1

Thực tế ly khi viết 'new Array (5)', mỗi chỉ mục vẫn là 'undefined' (khác với' null'). Nó giống như làm 'var arr = []; arr.length = 5; '. –

+0

Ah có, không xác định thay vì null. Sẽ chính xác. –

1

Kiểm tra the documentation for Array, nhưng câu trả lời đơn giản cho câu hỏi của bạn là .

var arr5 = new Array(1, 2, 3, 4, 5); // an array with initial 5 elements 
var arr = new Array(); // an array without initial 

Bạn cũng có thể sử dụng literals mảng:

var arr5 = [1, 2, 3, 4, 5]; 
var arr = []; 
+0

Tôi chỉ muốn nhấn mạnh rằng phiên bản 'mảng mới (5)' là ** không ** giống với '[1, 2, 3, 4, 5]'! –

+0

@Felix, bạn hoàn toàn đúng. Ngày Java của tôi khởi động. Tôi đã cập nhật câu trả lời của mình. –

2

Theres một vài cách để khai báo và đặt giá trị trong một mảng.

đầu tiên như những gì bạn muốn làm,

var myarr = new Array(); 
myarr[0] = 'element1'; 
myarr[1] = 'element2'; 
myarr[2] = 'element3'; 

cách thứ hai là xác định họ

var myarr =new Array("element1","element2","element3"); 

và thứ ba tương tự như thứ hai

var myarr =["element1","element2","element3"]; 

Bạn cũng có thể kiểm tra ra https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array để biết thêm thông tin về cách sử dụng các mảng. Bạn có thể sử dụng push và pop nếu bạn muốn.

Nếu bạn sử dụng jquery hoặc mootools, chúng cũng có các chức năng tích hợp để thực hiện trên các mảng, ví dụ: http://api.jquery.com/jQuery.each/.

0

Mảng động trong JavaScript. Bạn không cần phải khởi tạo chúng với độ dài nhất định. Trong thực tế, bạn nên sử dụng ký hiệu chữ cái [] vì sự mơ hồ của một hàm tạo Array:

Nếu bạn chỉ chuyển một tham số sang Array, nó sẽ đặt độ dài mảng thành tham số này. Nếu bạn chuyển nhiều hơn một tham số, các phần tử này sẽ được thêm vào mảng.

Kích thước của mảng được xác định như thế nào?

Kích thước của mảng là chỉ số cao nhất + 1. Điều này có thể khá khó hiểu. Xem xét việc này:

var arr = []; 
arr[41] = 'The answer?'; 
console.log(arr); // [undefined, undefined, ..., 'The answer?'] 
console.log(arr.length) // 42 

Bạn thậm chí có thể thiết lập độ dài bản thân bằng cách gán một số để .length:

arr.length = 99; 

Nếu bây giờ bạn thêm một yếu tố mới sử dụng arr.push(), nó sẽ nhận được chỉ số 100 và độ dài sẽ tăng. Bất cứ khi nào bạn thêm một phần tử vào mảng thông qua một chỉ mục, nó được kiểm tra xem arr.length có nhỏ hơn chỉ mục và được cập nhật tương ứng hay không. Nhưng nó không nhỏ hơn.

Vì vậy, trên thực tế, những gì var arr = new Array(5) đang làm là đặt độ dài của mảng thành 5. Không có gì khác.


Để biết thêm thông tin về tạo và điền các mảng, tôi khuyên bạn nên đọc nó trong MDC JavaScript Guide.

Các vấn đề liên quan