2011-02-03 39 views
12

Sự cố là: Chrome tự động sắp xếp các thuộc tính của đối tượng.Chrome và có thể Opera sắp xếp các thuộc tính đối tượng tự động

Nếu tôi có một đối tượng như:

var obj = {4: "first", 2: "second", 1: "third"}; 

sau đó khi tôi làm gì tiếp theo:

for(var i in obj) { 
    console.debug(obj[i]); 
} 

tôi thấy tiếp theo:

third second first

nhưng mong đợi:

first second third

+0

có thể trùng lặp của [Sắp xếp javascript theo giá trị thuộc tính] (http://stackoverflow.com/questions/1069666/sorting-javascript-by-property-value) –

Trả lời

18

Không bao giờ dựa vào thứ tự của tài sản. Chúng không có thứ tự và không có đặc tả nào định nghĩa các thuộc tính thứ tự cần được liệt kê.

Chrome orders properties with numeric keys numerically, trong khi các trình duyệt khác liệt kê chúng theo thứ tự chèn. Nó phụ thuộc vào việc triển khai thực hiện.

+0

'không có đặc điểm kỹ thuật xác định trong đó thuộc tính thứ tự phải là liệt kê' ..... Tôi có một ý tưởng. Làm thế nào về thứ tự WE PUT THEM IN. – Gavin

5

Bạn không nên mong đợi bất kỳ thứ tự cụ thể nào cho các khóa trong vòng for..in. Từ the MDC docs:

Một for ... in lặp loop trên các thuộc tính của một đối tượng trong một trật tự tùy ý

Nếu bạn muốn đặt hàng sử dụng các phím số, sử dụng một mảng.

+0

Thanx, tôi đã làm như vậy. :) – setty

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