当前位置: 首页 > Web前端 > HTML

一个简单的数组去重方法(没有引用类型)

时间:2023-03-28 11:27:14 HTML

我们先分析一个简单的场景。数组中只有基本类型,没有引用类型。先举个栗子:打印结果如下:对于第一次接触这个场景的新手来说,其实这段代码很吓人。别怕,我会一步步带你理解这段代码的含义。我们要学会把复杂的逻辑分解成多个步骤,简化它来实现一个功能。就像这个数组一样,我们假设它只有三个类型为数字的内容。1.首先定义一个函数,这个函数接受一个数组作为参数2.先用for循环遍历得到我们数组中的每一个元素,这时候就很简单了,一定要把这个问题简单化,千万不要担心后面的循环,你只需要把i当作0,那么你现在得到这个数组的第一个元素1,我们去掉重复的,那么你必须得到第二个元素,对吧?我如何获得第二个元素?第一层如何获得,然后如何获得。再来一个还不够吗?好吧,你现在有1和2,为什么不接下来做比较呢?如果相同,我们删除后面出现的元素,即j索引对应的元素。我认为有必要重新审视拼接的方法。使用拼接方法的知识。这个函数是改变原来的数组。这个函数可以接收三个参数。第一个参数是要删除的元素在数组中的索引值。第二个参数是从这个索引中向后删除多少个元素,第三个参数是在你的索引之后添加多少个元素。该参数是以逗号分隔的数据。一般很少有人知道第三个参数。但是如果你在和别人说话的时候知道了第三个参数,那么别人肯定会对你的基本功给出肯定的回答。.特别重要的是这个函数的返回值是你截取的部分,而不是原来的数组。(这里很多人有一个很大的误区,就是我要删除第一个元素[1,2,1],返回的应该是剩下的[2,1],但实际上返回值是[1],我们真正想要的结果还是需要对原组进行操作。)废话不多说,我们先把原题放一边,简单的试试拼接的方法。思考1:如果只有一个参数,B会是什么?答案是:第二个参数默认会设置为数组arr.length的长度。思考2??:下面的输出是什么?我不会发布此代码的答案,我强烈建议您自己键入它,按F12在控制台上键入它真的不会花您一分钟的时间。回到正题:好了,我们再来看看下面的代码。乍一看好像没什么问题,试运行一下;什么情况?我们不是在删除重复值吗?为什么会有重复?下面一步步分析是怎么回事:我拿数字1跟下面比较,比较j=4,发现1===1,运行splice(4,1)删除数组末尾的1,此时原数组的值为arr=[1,2,2,2]然后进入第二轮循环i取索引为1的数2与j持有的索引为2的数2进行比较,并发现2===2此时运行splice(2,1)!!!!注意:重点在这里!!!!运行splice方法后,arr的长度发生变化,原数组arr=[1,2,2,2],现在数组中索引为2的元素编号2被删除,索引值原来索引值为3的数2瞬间变成了2!!!该指标值的变化是瞬时的。注意,此时我们的j还是2,是不是比它多了2?是的,已经比较过了,所以我拿了2,直接去找索引为3的数,我们想到了这个方法。我应该判断。如果进入后面的if语句,就说明找到了重复项。value,那么我们让j--,然后让i持有的数和当前索引判断是否相等。总结:我们想通过这个例子来理清查重的思路。我不仅希望通过这篇文章,你只学会了删除1、2、3,更重要的是,你用这个例子来解决你以前没有考虑过的问题。思路。以此类推,希望大家试一试。