问题描述:如何以 `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遍历
添加回答
举报
0/150
提交
取消