2010-12-14 86 views

Trả lời

2

Sử dụng một mảng khi bạn muốn lưu trữ một tập hợp các đối tượng thuộc một loại và thuộc về một cách hợp lý thuộc về nhau.

Có điều gì đó cụ thể mà bạn đang thắc mắc không?

Mảng hữu ích khi bạn muốn vận hành trên tất cả các mục có liên quan (vòng lặp), truy cập các mục theo chỉ mục và sắp xếp.

+0

không. Chỉ cần nhầm lẫn với những gì các ứng dụng thực tế của một mảng so với một đối tượng. Tôi nghĩ rằng thuật ngữ này được gọi là 'use-cases' ... để sử dụng một số biệt ngữ. –

0

Bạn thường sử dụng các mảng khi bạn có một loạt các mục có liên quan mà bạn muốn đặt hàng và lập chỉ mục.

9

Khi bạn cần phụ thuộc vào đơn đặt hàng của các thành phần trong bộ sưu tập, hãy sử dụng Mảng, khi đặt hàng không quan trọng, hãy sử dụng các đối tượng. Đơn đặt hàng không được bảo đảm trong các đối tượng, nhưng chúng cung cấp cho tra cứu cặp khóa-giá trị nhanh.

7

Tôi muốn sử dụng Array [] khi tôi đang xử lý danh sách các đối tượng cùng loại * (như danh sách chuỗi) mà tôi muốn thứ tự và Object {} khi tôi xử lý thứ gì đó mà tôi muốn các thuộc tính của (và các thuộc tính có các kiểu khác nhau, thông thường).

Ví dụ:

var numberNames = ["one","two","three","four"]; 

var computer = { 
    motherBoard : "mother", 
    psu : psu_object(), 
    ram : { 
      ram1 : GB, 
      ram2 : TwoGB 
    } 
}; 

* Đây chỉ là sở thích của tôi. Mảng có thể chứa các phần tử của nhiều loại khác nhau.

5

Chúng chỉ khác nhau data structures, chúng phục vụ các mục đích khác nhau. Arraymở rộngObject và cung cấp các thuộc tính như length và các phương pháp như push()pop().

Hãy nghĩ đến một đối tượng dưới dạng bảng băm và một mảng dưới dạng danh sách.

Ví dụ: bạn có thể sử dụng các mảng như hàng đợi hoặc như một ngăn xếp mà sẽ không thể với các đối tượng.

Ở phía bên kia nếu bạn muốn lưu trữ dữ liệu và muốn truy cập trực tiếp vào một mốc cụ thể, bạn sẽ sử dụng một đối tượng.

Cuối cùng, nó sẽ chuyển thành câu hỏi cấu trúc dữ liệu nào là đúng cho công việc. Có lẽ không phải của họ là và bạn sẽ cần một cây thay vào đó (có thể được thực hiện thông qua các đối tượng).

3

Objects là một ứng cử viên tốt nếu bạn có khóa duy nhất.

Ví dụ Array vs Object:

var item = { id: '123', prop1: 456 }; 

var obj = {}, arr = []; 

// add to object 
obj[item.id] = item; 

// add to array 
arr.push(item); 

// get from object 
var got = obj[item.id]; 

// get from array 
var got; 
for(var i = 0; i < arr.length; i++) 
    if(arr[i].id == item.id){ 
     got = arr[i]; 
     break; 
    } 

Như bạn có thể thấy việc tìm kiếm một đối tượng là đắt hơn nhiều với một array (loop).Sử dụng object bạn sẽ không có quyền truy cập vào tất cả các phương thức trợ giúp array (sắp xếp/đẩy/v.v.) nhưng bạn vẫn có thể lặp lại thuộc tính của đối tượng bằng cách sử dụng vòng lặp for...in.

2

Khóa đối tượng là các chuỗi; các khóa mảng là số nguyên. Các đối tượng JavaScript là các bản đồ (String -> anything) và các mảng là các danh sách (các bộ sưu tập có thứ tự là anything).

Điều đó có hữu ích không?