Javascript数组权重删除问题的详细解决方案

Javascript数组权重删除问题的详细解决方案
首先,我想构建一个结果数组来存储原始数组中不重复的数据。遍历原始数组依次比较结果数组中的元素,以检测它是否重复:

array.prototype.clearrepetitiona =函数(){
var结果{ };
无功isrepetition;
对于(var i = 0;i < this.length;i++){
isrepetition = false;
对于(var j = 0;J < result.length;j++){
如果(这个{结果} { }){
isrepetition =真;
打破;
}
}
如果(!isrepetition){
Result.push(本{我});
}
}
返回结果;
}
写完后,我突然想到阵列法在ECMAscript 5指标,我只看了前几天来检索数组元素。所以我用IndexOf方法代替第二层环写了下面的代码B:

array.prototype.clearrepetitionb =函数(){
var结果{ };
对于(var i = 0;i < this.length;i++){
如果(result.indexof(这{我})= = 1){
Result.push(本{我});
}
}
返回结果;
}
代码从17行到9行转,它的更简洁。一般来说,有一个以上的数学问题解决的方法,然后我继续想其他办法。IndexOf方法与一个给定值的元素的数组的第一个元素返回搜索,查找索引1,或是没有发现,第一个参数是要搜索的可选参数的值:它指定索引的数组,从那里开始搜索,如果这个参数被省略。从搜索中看,思维是发散的。人们认为前面的方法都是重复的值。现在,用IndexOf方法,它不能反复根据每个元素的第一个匹配项的索引和元素本身的索引值。所以,我写的代码C:再次

array.prototype.clearrepetitionc =函数(){
var {这个{ { 0 } };
对于(var i = 1;i < this.length;i++){
如果(this.indexof(这{我})= =我){
Result.push(本{我});
}
}
返回结果;
}
写了这篇文章,然后继续思考,我想不出别的办法了。这三种方法都是基本的方法。所以,我去检查答案并测试自己。一下答案,或发现自己真的是太弱了,简单的问题或一些奇思妙想。以下是我所想的,不说太多,我的心,不多说,直接上经典的答案+解析。

首先,先说一个算法常说在空间换时间的办法,保持队形,我们叫它D码:

array.prototype.clearrepetitiond =函数(){
var结果{ };
var obj = { };
类型的var键;
对于(var i = 0;i < this.length;i++){
键=此{ };
类型:类型的关键;
如果(!obj {重点}){
obj { } = {型}的关键;
result.push(关键);
} else if(obj {key}。indexOf(型)){
obj {key}推(型);
result.push(关键);
}
}
返回结果;
}
在这种方法中,在原有的数组元素的值被保存在一个对象的属性时,遍历原数组。同时,该属性的值是一个数组来存储该属性的类型。这可以将元素类似于数字1元素和字符串1原始数组中。这种方法减少了花费在三以上方法IndexOf方法通过构造一个额外的对象时,这是更有效的。

如果你对用空间改变时间而不是看时间的有效方式感到满意,你就错了。现在,毫无疑问,代码是E.。

array.prototype.clearrepetitione =函数(){
var结果{ };
对于(var i = 0;i < this.length;i++){
对于(var j = i + 1;J < this.length;j++){
如果(这个{这个} =这个{ } }){
j +1;
}
}
Result.push(本{我});
}
返回结果;
}
代码D在空间中改变时间,感觉是这样的。那么代码E呢这个代码错了,这真的可以吗是的,起初我不理解代码,读它,读一遍,我才意识到它。然后,读者会不明白仔细看分析:从前面到后面的原始数组的第一层遍历,每个元素第二周期检测是否经过反复与它的元素,如果是后重复的元素跳过它;如果这个元素后,他不重复的所有元素,然后将其添加在阵列的结果。实现想法的方法是:在价值得正确的结果添加到不重复的数组,用第一种方法优化了二层循环效率比是比较高的,但这种方法的结果在一个序列中的序列原始数组的数组的元素不一样。

读了E代码后,你是否有一个大拇指,并有一个令人钦佩的眼睛呢(这些花和荣誉不给我,应该给伟大的神这个方法)。这是最后一条路:这是排序,然后是重量。旧规则,它被称为F代码:
array.prototype.clearrepetitionf =函数(){
This.sort();
var {这个{ { 0 } };
对于(var i = 1;i < this.length;i++){
如果({ { })!=结果{结果。length-1 }){
Result.push(本{我});
}
}
返回结果;
}
这首先使用数组排序方法排序对数组元素进行排序,然后返回工作

以上是关于删除Javascript数组的一步一步的研究。我们不断改进代码,共享六个代码。我希望你能从中学习和学习。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部