Như mọi người đều biết không có hàm dựng sẵn để loại bỏ các bản sao khỏi một mảng trong javascript. Tôi đã nhận thấy điều này cũng thiếu jQuery (có chức năng duy nhất cho các lựa chọn DOM) và đoạn mã phổ biến nhất mà tôi tìm thấy sẽ kiểm tra toàn bộ mảng và một tập hợp con của nó cho mỗi phần tử (không phải là rất hiệu quả), như :unique() cho mảng trong javascript
for (var i = 0; i < arr.length; i++)
for (var j = i + 1; j < arr.length; j++)
if (arr[i] === arr[j])
//whatever
vì vậy tôi làm của riêng tôi:
function unique (arr) {
var hash = {}, result = [];
for (var i = 0; i < arr.length; i++)
if (!(arr[i] in hash)) { //it works with objects! in FF, at least
hash[arr[i]] = true;
result.push(arr[i]);
}
return result;
}
tôi tự hỏi nếu có bất kỳ thuật toán khác được chấp nhận như là tốt nhất cho trường hợp này (hoặc nếu bạn thấy bất kỳ lỗ hổng rõ ràng mà có thể được cố định), hoặc , bạn làm gì khi bạn cần điều này trong javascript (Tôi biết rằng jQuery không phải là khung duy nhất và một số khác có thể có điều này đã được bảo hiểm).
Do những mảng chứa các giá trị chỉ vô hướng, hoặc Có một cơ hội mà nó sẽ chứa các đối tượng và mảng? –
Và có giả định được sắp xếp hay không? –