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。
在这里,您将看到拼接和切片之间的差异、返回值以及对原始数组的
影响。
以上是本节内容的简化版本,虽然它是精简的,但重点是它。我希望这将有助于您阅读本节。