2009-09-04 26 views
5

Khi gọi sắp xếp (chức năng) trong Javascript trên iPhone có vẻ như không sắp xếp. Ví dụ:Sắp xếp Javascript với chức năng không hoạt động trên iPhone

devices.sort(function(a, b) { 
        return a.name > b.name; 
       }); 

Có một số hạn chế đã biết hoặc ai đó có thể giúp tôi cách thực hiện việc này trên iPhone. Dường như nó hoạt động tốt trong Chrome, IE, Firefox.

chức năng
+0

Tính năng này có hoạt động trong Safari trên Windows và/hoặc Mac OS không? –

Trả lời

0

Các loại cần phải trả lại -1, 0, hoặc 1.

devices.sort(function(a, b) { 
    if (a.name < b.name) { 
    return -1; 
    } else if (a.name == b.name) { 
    return 0; // ambiguous 
    } else { 
    return 1; 
    } 
}); 
+0

Ngoài ra, hãy kiểm tra binarySearch này cho phép bạn nhanh chóng tìm các mục trong danh sách được sắp xếp lớn bằng cách sử dụng hàm so sánh tùy chỉnh. http://www.dweebd.com/javascript/binary-search-an-array-in-javascript/ –

0

Bạn phải trả lại một cách rõ ràng -1, 0 hoặc 1, theo định nghĩa của chức năng này, tôi đoán. Lỗi của tôi.

    devices.sort(function(a, b) { 
        if (a.name < b.name) return -1; 
        if (a.name > b.name) return 1; 
        return 0; 
       }); 

Làm việc ngay bây giờ.

8

chức năng so sánh của bạn bị hỏng: Nó sẽ trả về một giá trị số trong đó có được tiêu cực nếu a < b, zero nếu a = b và tích cực nếu a > b, tức là

function(a, b) { 
    return a.name < b.name ? -1 : a.name > b.name ? 1 : 0; 
} 

Chức năng của bạn trả về false nếu , sẽ được được chuyển đổi thành 0 và do đó có nghĩa là các giá trị phải được coi là bằng nhau. Nó không nên làm việc ở tất cả, nhưng nếu nó không, điều này là do trùng hợp ngẫu nhiên (tức là phụ thuộc vào thuật toán phân loại và/hoặc bộ đầu vào).

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