题目描述:
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次。
- 示例 1: ``` 给定数组 nums = [1,1,2],
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。
#### 解题:
##### 思路一:
大家都知道js对象的key是唯一的,采用`hasOwnProperty`检测的属性的形式,进行过滤
```javascript
var removeDuplicates = function(nums) {
var obj = {};
var result = nums.filter((item,index)=>{
return obj.hasOwnProperty(item) ? false : (obj[item]=true);
});
return result;
};
思路二:
es6的Set
var removeDuplicates = function(nums) {
return Array.from(new Set(nums));
//return new Set([...nums]); //更简洁
};
思路三:
这个有局限性,必须要进行排序过后;
var removeDuplicates = function(nums) {
var res = [];
for(var i =0;i<nums.length;i++){
if(nums[i]!= nums[i+1]){
res.push(nums[i])
}
};
return res;
};
removeDuplicates([66,1,4,3,66,0,0,1,1,1,2,2,3,3,4].sort())
等等很多,欢迎补充~
扩展阅读: