今天在课堂上我们被要求编写一个算法。
给定一个数组,删除重复的值:
- 它应该是稳定的,并且不必使用内部循环。
- 应尽可能原地完成
- 不使用内置函数(我只能使用
.push
)
经过一番奋斗,这就是我想出来的。
function remove_dupes(arr){
var seen = {};
var count = 0;
for( var i = 0; i < arr.length - count ; i++) {
arr[i] = arr[i+count];
if( seen[arr[i]] ) {
count++;
arr[i] = arr[i+count];
i--;
}
seen[arr[i]] = true;
}
arr.length = arr.length - count;
}
这里有一些重复的代码,我感觉使用 i--
可能不是最好的方法。
有没有什么方法可以改进这段代码(不使用内置函数)?