2009-07-14 27 views
5

Tôi có một mảng trong Javascript:Looping thông qua các yếu tố của một mảng trong Javascript

var array = new array(); 
array[0] = "apples"; 
array[1] = "oranges"; 
array[2] = "pears"; 

Trong PHP, với một mảng nào đó, tôi có thể sử dụng sau đây để lặp qua một mảng, và chia tay các phím và các giá trị:

foreach ($array as $key => $value) { 
    echo("Key is $key and Value is $value"); 
} 

Làm cách nào để làm điều này trong Javascript? Tôi nhận thức được:

for (x in array){ 
    // Do something with x. 
} 

Nhưng tôi đã không tìm thấy gì sẽ lặp lại phong cách php foreach. Có thể chính xác đạt được một cái gì đó tương tự trong Javascript? (Tôi cũng đang sử dụng jQuery, nếu một cái gì đó có thể được thực hiện trong jQuery).

+0

Có thể trùng lặp: http: // stackoverflow.com/questions/1078118/how-to-iterate-over-a-json-structure –

Trả lời

14

Thứ nhất,

var array=[]; 

là thích hợp hơn để sử dụng "mới."

Thứ hai, các phím của bạn là số trong trường hợp này, vì vậy bạn chỉ cần làm:

for (i=0;i<array.length;i++) { 
    console.log("Key is "+i+" and Value is "+array[i]); 
} 

Nếu bạn muốn có chìa khóa mà không phải là số, sử dụng một đối tượng JavaScript thay vì một mảng. Đó là hợp lệ để sử dụng chuỗi thay vì số như chỉ mục mảng, nhưng JavaScript không có nhiều hỗ trợ cho điều đó.


Tôi sử dụng "console.log" vì tôi cho rằng bạn không muốn một loạt cảnh báo xuất hiện. console.log có thể được thay thế bằng bất cứ điều gì bạn sử dụng để đăng nhập thông tin. Bạn có thể sử dụng alert() hoặc viết văn bản vào một div thay thế.

+3

Bạn nên thêm console.log đó yêu cầu firefox với firebug. – ichiban

+0

@ichiban. Điểm tốt. Tôi đã chỉnh sửa câu trả lời của mình để đề cập đến điều đó. – Nosredna

+0

Câu trả lời là sử dụng các đối tượng Javascript sau đó - vì nó sẽ xuất hiện tôi yêu cầu một chút linh hoạt hơn so với mảng tiêu chuẩn. (Mảng của tôi được tạo động và chứa các giá trị không phải là số). Cảm ơn bạn đã trả lời. – EvilChookie

0

Nếu trật tự không phải là một ưu tiên (hoặc thậm chí nếu nó là, bạn có thể luôn luôn chỉ cần đảo ngược mảng), đây là phương pháp ưa thích của tôi:

var i = array.length; 
while(i--) { 
    console.log("key is " + i + " and value is " + array[i]); 
} 

Cách tiếp cận này làm việc vì số 0 đánh giá như false trong JavaScript.

8

Sử dụng jQuery.each bạn có thể viết một cái gì đó tương tự như (không kiểm tra):

jQuery.each(array, function(k,v) { 
    console.log("K: "+,k," V:",v); 
}); 
+0

Ngoại trừ việc này sẽ yêu cầu jQuery ... –

+7

theo yêu cầu trong câu hỏi. – SilentGhost

0

jQuery là không cần thiết cho các loại hình công việc, nó có thể chỉ cần sử dụng một vòng lặp for rằng đó là cách nên để lặp qua một mảng trong JS. Bạn có thể đọc link text để biết chi tiết hơn

1

Có một cái nhìn tại underscorejs.org - với nó, bạn làm theo cách này:

_.each(array, function(element, index, array) { 
    doSomething(item, index); 
}); 

Nó được sử dụng bởi backbonejs và nhiều người khác khuôn khổ/thư viện, giống như sao băng, ví dụ Nó có 80 hoặc rất hữu ích chức năng - nếu bạn nghiêm túc về javascript, mất 30 phút để đọc toàn bộ trang gạch dưới, bạn sẽ không bao giờ muốn mã trong bất cứ điều gì nhưng javascript.

1
for (x in array){ 

    var arrayItem = array[x] 

} 

Loại vòng lặp này không hoạt động, nhưng cho vị trí mảng chứ không phải mục từ chính mảng đó. Nó khá ngắn gọn và tôi sử dụng nó mọi lúc

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