Sử dụng phiên bản mới nhất của JavaScript có sẵn cho hầu hết các trình duyệt hiện đại, bạn có thể làm điều này:
array.forEach(function(x){
document.write(x);
});
Cụ thể tại https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach. Nếu bạn lo lắng rằng một trình duyệt có thể không có hỗ trợ cho điều này, bạn có thể tự thêm nó, bằng cách sử dụng phiên bản triển khai (hy vọng được rút ngắn) mà chúng đã liệt kê trong "Khả năng tương thích".
Đây là một chút lỗi thời, nhưng đây là một phiên bản rút gọn tương thích của forEach
mà tôi có nguồn gốc từ trang của Mozilla một vài năm trước đây:
if(!Array.prototype.forEach){Array.prototype.forEach=function(b){if(typeof b!="function"){throw new TypeError()}var a=this.length,d=arguments[1],c;for(c=0;c<a;c++){if(c in this){b.call(d,this[c],c,this)}}}};
Tôi chưa bao giờ gặp phải bất kỳ vấn đề với điều này, nhưng thực hiện trên trang của Mozilla đã được mở rộng với một số kiểm tra bổ sung và mã để làm cho nó tương thích với ECMA-262, Phiên bản 5, 15.4.4.18.
Tôi có một tệp có tên là common.js
mà tôi sử dụng và bao gồm trên tất cả các trang của mình để bao gồm điều này, cũng như tất cả các tính năng bổ sung khác "Array extras" được giới thiệu với JavaScript 1.6, như được liệt kê tại https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.6#Array_extras. (Tôi đã có ý nghĩa để cập nhật và xuất bản để sử dụng công khai.)
Đây có thể không phải là cách tiếp cận nhanh nhất (xem http://jsperf.com/for-vs-foreach/15 cho một số chi tiết cụ thể - cảm ơn liên kết, Amadan) - nhưng có điều gì đó để nói cho sự đồng nhất và bảo trì, vv Ngoài ra, nó sẽ rất thú vị để xem có bao nhiêu sự chênh lệch này được tối ưu hóa bằng cách cải tiến thêm các công cụ JavaScript trong vài tháng và vài năm tới. :-)
Những javascripts mới hơn cùng thực sự điều trị chỉ số mảng như tính hạng nhất, làm cho nó ít của một thực tế xấu. (Nó vẫn còn nguy hiểm nếu bạn đang hỗ trợ động cơ js cũ của khóa học, hoặc nếu Array của bạn thừa kế tài sản và bạn không kiểm tra cho điều đó. Câu trả lời của Rocket dưới đây chứng minh điều này.) – kojiro
Lớp học đầu tiên? Làm sao? –
Vâng, đó là điều - bạn phải hứa sẽ không bao giờ mở rộng một mảng hoặc nguyên mẫu của nó. Ngoài ra, đơn đặt hàng không được bảo đảm. Ngoài ra, ngược lại, nhưng hoàn toàn hợp lý một khi bạn biết những gì đang xảy ra, các chỉ số là biểu diễn chuỗi các số. Ngoài ra, nếu bạn chưa đặt các phần tử, chúng sẽ không được lặp lại. 'a = []; a [3] = 5; cho (i in a) {console.log (i, typeof (i)); } 'chỉ cho' 3 chuỗi', một kết quả khác biệt rõ ràng so với phương thức 'array.length'. – Amadan