JS数组权重去除的5种算法
减肥,最简单的方法实现的想法:建立一个新的数组,遍历传入的数组,数组的值是不是新加入新的阵列;注:值在数组的方法确定指标的ecmascript5方法,IE8不支持需要写一些与低版本浏览器的代码更兼容,源代码如下:
最简单的数组删除方法
功能unique1(阵列){
新的临时数组
当前数组遍历
对于(var i = 0;i < array.length;i++){
如果当前数组已保存到临时数组中,则跳过,
否则将推送到临时数组中。
如果(n.indexof(数组{我})= - 1 n.push(数组{我}));
}
返回N;
}
2。对象键值对
该方法执行比其他方法更快,是一些大的,实现想法的记忆:创建一个新的JS对象和一个新数组遍历输入数组,确定JS的价值是关键,如果不添加对象键,产生一个新的数组。注意:当决定是否是一个JS对象键,它会自动执行toString()对输入的密钥,和不同的密钥可能会被误认为是相同的;例如,一个{ 1 }和{ 1 。为解决上述问题,你还是叫指标。
最快,最多的空间(时间空间)
功能unique2(阵列){
VaR N = { },R = { },len = array.length、瓦迩、型;
For (VaR I = 0; I < array.length; i++) {
数组= { };
类型:类型的值;
如果(!{ }){
类型};
R.push(Val);
} else if(N {值}。indexOf(型)< 0){
{ }。推(类型);
R.push(Val);
}
}
返回R;
}
三.数组下标判断法
我们还是要调用的性能指标与方法1。其思想是,如果当前数组中第一个i项的位置不是i,则重复和忽略i项。否则,保存结果数组。
功能unique3(阵列){
数组{ 0 };数组结果
从第二次/遍历开始
对于(var i = 1;i < array.length;i++){
如果我第一次出现在数组中当前位置的当前数组不是i,
因此,重复i,忽略,否则,保存结果数组。
如果(array.indexof(数组{我})=我n.push(数组{我}));
}
返回N;
}
4。排序后相邻分割
虽然本机数组的排序方法不太可靠,但对不注意序列的缺点没有影响。实现思路:展开数组排序,对相邻的相同值进行排序,然后遍历新数组,只添加不重复以前的值。
相邻值将相同,然后遍历删除重复值。
功能unique4(阵列){
Array.sort();
var数组{ 0 } };
对于(var i = 1;i < array.length;i++){
如果(数组{ })!=重新{重新。length-1 }){
Re.push(数组{我});
}
}
重新回归;
}
5。优化遍历数组法
代码比较酷,实现思路:没有在新数组中重复正确的值。(下一轮判断停止当前循环,并在出现重复值时输入顶部循环)
在新数组中没有得到正确的重复值。
功能unique5(阵列){
var = { };
对于(var i = 0,L = array.length;i < L;i++){
用于(var j = i + 1;j < l;j + +)
如果(数组{数组});
R.push(数组{我});
}
返回R;
}
确定浏览器是否支持指数,指数低于ecmascript5 IE8的新方法(包括IE8,IE8只支持部分ecma5)不支持
如果(!阵列。原型。指标){
/ /新的索引方法
array.prototype.indexof =功能(项目){
VaR结果= 1,a_item = null;
如果(this.length = = 0){
返回结果;
}
对于(var i = 0,len = this.length;我< len;i++){
a_item =这{我};
如果(a_item =项目){
结果=我;
打破;
}
}
返回结果;
}
}
以上是提供5种JS数组的实现算法,希望能对大家有所帮助。