1.indexof和字符串的方法:

因为IE7使用IndexOf数组对象犯了一个错误,你需要重写一个兼容性。

复制代码代码如下所示:

Array.prototype.lastIndexOf(项目、指标){

var n = this.length,I =(指数= = null | |指数> n-1)N-1:指数;

如果(i < 0)i = n + i;

为(;;=;0;;

如果(这{我} =项目) / /指标,一致的判断,字符串

还我;

返回- 1;

}



方法:将2.shuffle阵列。

复制代码代码如下所示:

函数洗牌(目标){

var i = target.length,J,温度;

(为;我> 0;J = parseInt(数学。随机)(我),X =目标{我},{我} = {目标目标目标J },{ } { } J = x)

/ /假设长度= 10,然后Math.random(* 10 - > { 0)),parseInt,{ 0,9 },随机选择和数组的最后交流。第二周期,{ 0.8 },和数组的倒数第二。

将目标;

}



3的平面处理。数组:变平,返回一维数组

复制代码代码如下所示:

功能平(ARR){

var结果{ };

arr.foreach(功能(项目){)

如果(Array.isArray(项目)result.concat(平)(项目));

其他result.push(项目);

});

返回结果;

}



方法:手术4.unique阵列

这种方法,面试官喜欢问,因为它有多种实现方法,最常见的是环两。知道最常见的是使用一个对象,然后循环数组arr,每个如果(a { } } {我ARR)存在,不存在,然后把你的新定义数组的结果。的存在证明,重复,所以你不用努力的结果。这个方案,123

所以有以下方法:{ 1,1

复制代码代码如下所示:

如果((typeof obj {数组{我} })!=(typeof数组{我})| | obj {数组{我} }!=数组{ }){

A.push(数组{我});

obj { {我} } =数组数组{我};

}



首先确定类型是相同的,如果相同的,由它们的值判断相等,不等于存款,等于已经存在的值之前。

如果类型不同,这里有两种情况。

在第一种情况下,目标已经存储的数据,例如,obj { 123 } = 123,现在阵列{我} = 123

第二种情况是,对象没有保存的数据,例如,数组{我} = 123,obj { 123 } = undefind,当类obj { } } {我是数组类型定义为不确定的,不等于类型数组{我},这是存放在一个数组。

这种方法可以解决字符串和数字相同的情况,但不能解决对象的相同情况;

在第一个周期,obj {一} =未定义的类型,类型为对象。对象{一} = {物}的实际上是obj =一;

第二周期类obj {黑}等于类型对象obj { },事实上,类为对象,类B为对象,所以它是对象数组{我} } {!= b,即!乙,所以存入

obj {黑} = B;即,对象obj { } = B;覆盖以前的obj { } =一个对象;

在这种情况下,所有对象都将出现,只有最后一个对象值将被保存。

当我考虑对象时,我使用以下方法:

复制代码代码如下所示:

对于(var i = 0;i < temp.length;i++){

对于(var j = i + 1;J < temp.length;j++){

如果(临时{ } =温度{ }){

temp.splice(J,1);

J;

}

}

}

回复;



5。数组排序:排序方法。如果你要排序的对象,你可以写一个比较(A,B){ if(a.年龄> b.age)返回1;否则返回1;},A.sort(a.sort)。

6.min返回数组的最小值:返回math.min.apply(0,阵列);

7.unshift不返回数组的长度在ie6,7。

复制代码代码如下所示:

如果({ }。不换位(1)= = 1!) / /从前面加一项空数组,其他浏览器将返回1,但ie6,7不返回数组的长度,如果此时执行语句

{

无功_unshift = array.prototype.unshift; / /函数劫持。

array.prototype.unshift =函数(){

_unshift.apply(这个参数);

返回this.length;

}

}



在一个参数的情况下8.splice,IE8默认的二参数及以下版本是0,而其他的浏览器是数组的长度。

复制代码代码如下所示:

如果({1,2,3}。接头(1)。长度= = 0) / / IE8及以下版本将等于0,其他版本将等于3,进入如果

{

无功_splice = array.prototype.splice;

array.prototype.splice =函数(){

如果(arguments.length = = 1) / /如果只有一个参数

{

返回_splice.call(这一个,这个长度);

其他{ }

返回_splice.apply(这个参数);

}

}

}



该方法将改变数组的选项,所以阵列推、流行、移位、不位移(这些方法也会修改阵列选项)会调用这个方法来实现。

有一个地方值得注意:

复制代码代码如下所示:

VaR颜色=新的数组(红的,蓝的,',);

2 = color.splice VaR(2,0,'brown,粉红的);

警报(彩色); / /红色,蓝色,棕色,粉红色,黄色,黑色,开始在黄色选项,操作删除,如果为0,然后添加选项之前插入yellow.remember。





在这里,您将看到拼接和切片之间的差异、返回值以及对原始数组的影响。

以上是本节内容的简化版本,虽然它是精简的,但重点是它。我希望这将有助于您阅读本节。