题目:编写一个函数,实现对一个无序数组进行去重并排序。

要求:

  1. 不能使用ES6的Set数据结构。

  2. 数组中的元素均为数字类型。

  3. 函数返回值为一个新的数组,不改变原数组。

  4. 排序方式为从小到大排序。

  5. 时间复杂度为O(nlogn)或更优。

示例:

输入:[3, 2, 2, 1, 4, 5, 5]

输出:[1, 2, 3, 4, 5]

答案:

function uniqueSort(arr) {
  var obj = {};
  var result = [];
  for (var i = 0; i < arr.length; i++) {
    if (!obj[arr[i]]) {
      obj[arr[i]] = true;
      result.push(arr[i]);
    }
  }
  result.sort(function(a, b) {
    return a - b;
  });
  return result;
}

var arr = [3, 2, 2, 1, 4, 5, 5];
var result = uniqueSort(arr);
console.log(result); // [1, 2, 3, 4, 5]
现在你是资深前端工程师出一道困难的js编程题给出答案

原文地址: https://www.cveoy.top/t/topic/5WE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录