2011-09-13 12 views

Trả lời

180

Tốt cũ push vẫn hoạt động.

x = [] 
x.push 'a' 
+1

Tuyệt vời. Cảm ơn. –

+9

Tác giả của [quyển sách PragProg] (http://pragprog.com/book/tbcoffee/coffeescript) tại đây. +1 cho câu trả lời của Thilo. Tôi không muốn đề cập đến các phương thức nguyên mẫu 'Array' trong cuốn sách, vì đã có rất nhiều tài liệu JavaScript tốt. Xem, ví dụ: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array#Methods_2 –

+0

Còn nếu chúng ta có một đối tượng chứ không phải là một nhân vật thì sao? –

47

Tốt hơn hết là sử dụng tính năng đọc danh sách.

Ví dụ chứ không phải này:

things = [] 
for x in list 
    things.push x.color 

làm điều này thay vì:

things = (x.color for x in list) 
+23

Điều đó không nối thêm các giá trị từ danh sách vào mọi thứ. Điều đó thay thế mảng vật hoàn toàn. Tôi cũng đã thử nghiệm nó. – ajsie

+0

Vâng, chắc chắn ajsie, bạn đã chính xác, nó thay thế nó, không nối thêm. Vấn đề là, tuy nhiên, thường là khi bạn đang đẩy, bạn thường làm một cái gì đó ** khá giống như ** một mảng hiểu anyway. Không phải trong mọi trường hợp, phải thừa nhận, nhưng rất nhiều thời gian. – suranyami

+5

Câu trả lời của Thilo là câu trả lời đúng - cuộn xuống! – micapam

2

Nếu bạn đang chaining cuộc gọi sau đó bạn muốn append để trở mảng chứ không phải là chiều dài của nó. Trong trường hợp này, bạn có thể sử dụng .concat ([newElement])

Phải là [newElement] vì concat đang chờ một mảng giống như kết nối của nó. Không hiệu quả nhưng trông đẹp mắt trong cài đặt phù hợp.

+0

Cuộc gọi chuỗi nhiều hơn là một điều phong cách bạn có thể làm tuy nhiên, như bạn đã nói "phương pháp không hiệu quả" - 'concat' trả về một mảng mới được xây dựng từ các phần tử mảng A + mảng B. Tài liệu tham khảo cho các đối tượng được lưu giữ để thay đổi đối tượng được tham chiếu trong mảng A, mảng B hoặc kết quả concat cũng sẽ được phản ánh trong các mảng khác. – SidOfc