gpt4 book ai didi

javascript - 删除重复算法,到位且稳定(javascript)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:04 25 4
gpt4 key购买 nike

在今天的类里面,我们被要求编写一个算法。

给定一个数组,删除重复值:

  • 它应该是稳定的,不应该使用内部循环。
  • 应尽可能就地完成
  • 没有使用内置函数(我只被允许使用.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;
}

Working JSBin

我这里有一些重复的代码,我觉得也许 i-- 不是最好的方法。

有什么方法可以改进这段代码(不使用内置函数)?

最佳答案

最后,我想我在没有创建新数组的情况下得到了你想要的:

function remove_dupes(arr){
var seen = {};

var k = 0;
for( var i=0; i<arr.length ;i++) {
if( !seen[arr[i]] ) {
arr[k++] = arr[i];
seen[arr[i]] = 'seen';
}
}

arr.length = k;
}


var x = [ 1, 2, 1, 4, 5, 3, 'dojo', 4, 6, 6, 7, 7, 6, 7, 5, 6, 6, 6, 6, 7, 'dojo', 11 ];
remove_dupes(x);


document.write(x);

希望对您有所帮助。

关于javascript - 删除重复算法,到位且稳定(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32510114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com