2012-07-06 42 views
10

Đây có phải là một phần trong cuốn sách "Học PHP, MySql và Javascript của. Robin Nixon" sai?sắp xếp mảng số()

numbers = [7, 23, 6, 74]; 

numbers.sort(function(a,b){return a - b}); 

ra là 6,7,23,74

Cuốn sách này nói:

Nếu chức năng vô danh bên sort() trả về một giá trị lớn hơn không, các loại giả một có trước b.

Nếu hàm ẩn danh bên trong sắp xếp() trả về một giá trị nhỏ hơn 0, sắp xếp giả định b đến trước a.

Sắp xếp chạy chức năng này trên tất cả các giá trị trong mảng để xác định thứ tự của chúng.

là sai? Bởi vì ....

a đây là 7
b đây là 23

7 - 23 = -16 // một số nhỏ hơn không. Cuốn sách nói rằng nó nên b đến trước khi a.

để kết quả cuối cùng phải là 74, 23, 7, 6

+1

Không, đúng vậy: http://jsfiddle.net/cjD3v/ –

+4

Bạn biết đấy, bạn chỉ có thể: _thử nó out_. Giống như ở trên jsfiddle – TheZ

+1

nhưng lời giải thích từ cuốn sách là sai? –

Trả lời

5

Có vẻ như nó sai. Từ MDN:

Nếu so sánhChức năng (a, b) nhỏ hơn 0, hãy sắp xếp thành chỉ số thấp hơn b.

("chỉ số thấp" trong trường hợp này có nghĩa là một đứng trước b)

2

Đầu ra là chính xác, nhưng lời giải thích không phải là. Nếu phương thức trả về < 0, phương thức đến trước b.

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