为了账号安全,请及时绑定邮箱和手机立即绑定

怎么以O(n)的复杂度实现数组的去重?(js)

怎么以O(n)的复杂度实现数组的去重?(js)

慕村9548890 2018-10-24 20:38:01
问题描述:如何以 `O(n)` 的时间复杂度实现字符序列的去重,如对以下数组去重[1, 'a', '1', 2, '2', 'b', 'b', null, null, , ,'null']1 和 ‘1’不算重复,undefined, null 也要保留。不使用ES6的语法。
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

var arr = [1, 'a', '1', 2, '2', 'b', 'b'];
let resultarr = [...new Set(arr)]; 
console.log(resultarr);//[1, "a", "1", 2, "2", "b"]

如果不去重对象的可以用下面的

var arr = [1, 'a', '1', 2, '2', 'b', 'b', null, null, , ,'null'];var obj = {};var result = [];for (var i = 0; i < arr.length; i++) {  var key = typeof arr[i]+arr[i];   if(!obj[key]){
     obj[key] = true;
     result.push(arr[i])
   }
}console.log(result);//或者不用多余的数组存储for (var i = 0; i < arr.length; i++) {  var key = typeof arr[i]+arr[i];   if(!obj.hasOwnProperty(key)){
     obj[key] = arr[i];
   }
}console.log(Object.values(obj));//es5 for in遍历


查看完整回答
反对 回复 2018-10-24
  • 1 回答
  • 0 关注
  • 1296 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信