Сортировка массива и удаление дубликатов без функции сортировки

#javascript

#javascript

Вопрос:

Как я могу удалить дубликат из массива, пока у меня есть функция, сортирующая его. Я использовал функцию пузырьковой сортировки, но когда я пытаюсь использовать другие функции для удаления дубликатов, вызывается ошибка.

 function sortarray(array) {
  var done = false;
  while (!done) {
    done = true;
    for (var i = 1; i < array.length; i  = 1) {
      if (array[i - 1] > array[i]) {
        done = false;
        var tmp = array[i - 1];
        array[i - 1] = array[i];
        array[i] = tmp;
      }
    }
  }
  return array;
}

var numbers = [100, 100, 13, 1, 47, 50];
sortarray(numbers);
console.log(numbers) 

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

1. @DenizYakupCelik какую ошибку вы получили и почему sort функция не может быть использована?

Ответ №1:

Чтобы удалить дублирующиеся элементы из массива, вы можете использовать этот пример.

 // Defining function to get unique values from an array
function getUnique(array){
    var uniqueArray = [];
    
    // Loop through array values
    for(i=0; i < array.length; i  ){
        if(uniqueArray.indexOf(array[i]) === -1) {
            uniqueArray.push(array[i]);
        }
    }
    return uniqueArray;
}

var names = ["John", "Peter", "Clark", "Harry", "John", "Alice"];
var uniqueNames = getUnique(names);
console.log(uniqueNames);
 

Проверьте это руководство: https://www.tutorialrepublic.com/faq/how-to-remove-duplicate-values-from-a-javascript-array.php#:~:text=Answer: Use the indexOf(),from an array in JavaScript.

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

1. большое вам спасибо, но как мне включить эту функцию в функцию, которая у меня уже есть

2. потому что ему нужно одновременно обрабатывать и удалять дубликаты. У меня раньше была функция, которая удаляла дубликаты, но я не знаю, как я могу использовать обе функции одновременно

3. @DenizYakupCelik Ваша функция возвращает отсортированный массив, поэтому вы можете использовать его в качестве параметра для этой функции console.log(getUnique(sortarray(numbers))) .

4. Я пробовал. И я не могу показать вам код

5. @DenizYakupCelik Убедитесь, что вы все сделали правильно, я просто проверил код, он работает правильно и возвращает результат [1, 13, 47, 50, 100].