Почему jQuery `$.unique()` не сортируется?

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть следующее:

 $(function () {
    var list = ["/62","/15","/65","/62","/15","/08","/01","/65","/62","/65","/62","/15","/01"];
    $.unique(list);
    console.log(list);
});
  

Вывод:

 ["/01", "/65", "/62", "/65", "/08", "/15"]
  

https://api.jquery.com/jquery.unique / говорит:

 The $.unique() function searches through an array of objects, sorting the array, and removing any duplicate nodes.
  

Считаются ли два «/ 65» разными? Если да, то почему:

 $(function () {
    var list = ["/62","/15","/65","/62","/15","/08","/01","/65","/62","/65","/62","/15","/01"];
    $.unique(list);
    $.unique(list);
    console.log(list);
});
  

произвести:

 ["/15", "/08", "/62", "/65", "/01"]
  

И почему те, которые начинаются с «/ 0», не находятся в начале вывода?

Комментарии:

1. он принимает массив элементов dom, а не объектов. «Сортирует массив элементов DOM на месте с удалением дубликатов. Обратите внимание, что это работает только с массивами элементов DOM, а не со строками или числами. »

2. [«/62″,»/15″,»/65″,»/62″,»/15″,»/08″,»/01″,»/65″,»/62″,»/65″,»/62″,»/15″,»/01»].filter(функция(a,b,c){возвращает c.indexOf(a)===b;});

3. при 13 элементах в массиве perf должен быть последним критерием. использование строковых ключей в качестве уникальных означает, что [1], 1 и «1» конфликтуют…

4. хорошо, хорошо. вот более быстрая версия, которая по-прежнему не слишком сложна: [«/62″,»/15″,»/65″,»/62″,»/15″,»/08″,»/01″,»/65″,»/62″,»/65″,»/62″,»/15″,»/01»]. filter(функция(a,b,c){ if(this.indexOf(a)==-1)возвращает this.push(a);},[]);

5. @zerkms Поскольку эта тема стала такой длинной, я скоро урежу свои комментарии. Кстати, я только что заметил, что у тебя еще и киви на 100 тысяч ! (Ладно, может быть, Киви — это слишком сильно сказано, читая ваше резюме. Но, по крайней мере, вы живете в Новой Зеландии.) Хорошо познакомились, и я соглашаюсь с вашей точкой зрения, что есть время и место для использования линейного поиска.

Ответ №1:

Как вы можете догадаться из длинной ветки комментариев, $.unique это неправильная вещь для использования. Вместо этого используйте символы подчеркивания _.uniq .