数组克隆方法,Array对象根底知识小结

www.ca88.com

进而黄金年代旦要创立一个与已经存在的靶子内容同样的靶子,不能够透过轻便的赋值操作。那样说的大概依旧不太了然。
看下边包车型客车例子: 复制代码 代码如下: var
a=[1,2,3,4]; var b=a;c=b; a.pop(); //移除最终四个要素 alert;
//弹出1,2,3 alert; //弹出1,2,3 var a=[1,2,3,4]; var b=a;c=b; a.pop();
//移除最后叁个因素 alert; //弹出1,2,3 alert; //弹出1,2,3
大家推行上边的代码发掘,在a的原委做校订后,变量b和c的结果也改造了。
上边的场馆可能不是大家所急需的,我们期待的是创制三个与原对象内容相近的“新”对象。这样我们就必要通过有个别仿制的方法来贯彻。
JS里Array也是生龙活虎种Object。这里我们任重(英文名:rèn zhòng卡塔 尔(阿拉伯语:قطر‎而道远总计一下Array的仿造格局,大家这里为Array原生对象扩张学一年级个clone方法。
1、最简易的主意,便是开创一个新数组,并遍历数组逐项增加到新数组中。
复制代码 代码如下:
Array.prototype.clone=function(){ var a=[]; for(var
i=0,l=this.length;i复制代码 代码如下: Array.prototype.clone=function(){
return this.slice; } Array.prototype.clone=function(){ return
this.slice; } 3、通过Array对象的concat方法。
concat方法是用来完结数组的联合的。通过和二个空函数的联结,就能够兑现大家的仿造作用。
复制代码 代码如下:
Array.prototype.clone=function(){ return [].concat; } //或者
Array.prototype.clone=function(){ return this.concat(); }
Array.prototype.clone=function(){ return [].concat; } //或许Array.prototype.clone=function(){ return this.concat(); }
倘诺发挥想象应该还会有别的的章程,以上只是自己想到的三种办法。 JavaScript
克隆数组最简便的艺术JavaScript数组的火速克隆和数组的排序、乱序和查找

对此Array对象自己的下结论理念是:5法,3招,12式

1.证明5法:只针对意气风发维数组,当然还大概有二维三维,这里就不做解释了

复制代码 代码如下:

var a = new Array();
var a = new Array;
var a = new Array(10);//成立Array对象,并钦定数组中项的个数
var a = new Array(“red”,”blue”,”green”);
var a = [“red”,” blue”,” green”];

2.属性3招:constructor,length,prototype constructor代表创设对象的函数。 constructor 属性是富有具备 prototype
的靶子的积极分子。它们包罗除 Global 和 Math 对象以外的有着 JScript
固有对象。constructor 属性保存了对结构特定对象实例的函数的引用。比如:

复制代码 代码如下:

x = new String(“Hi”);
if (x.constructor == String)
// 进行管理(条件为真卡塔尔国。

function MyFunc {
// 函数体。
}
y = new MyFunc;
if (y.constructor == MyFunc)
// 进行管理(条件为真卡塔尔国。

Length表示数组的长短,有多少项。那些就不写示例了。
prototype重返对象类型原型的引用。用 prototype
属性提供对象的类的风流洒脱组底子效。对象的新实例“世袭”授予该指标原型的操作。
例如说,要为 Array
对象增添重回数组中最大成分值的办法。要做到那或多或少,注明该函数,将它参与Array.prototype, 并使用它。

复制代码 代码如下:

function array_max( ){
var i, max = this[0];
for (i = 1; i < this.length; i++)
{
if(max < this[i])
max = this[i];
}
return max;
}
Array.prototype.max = array_max;
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max( );

该代码实践后,y 保存数组 x 中的最大值,或说 6。
3.方法12式:concat 方法 | join 方法 | pop 方法 | push 方法 | reverse
方法 | shift 方法| unshift 方法| slice 方法| splice 方法| sort 方法|
toString 方法| valueOf 方法

复制代码 代码如下:

//1.concat():再次回到多少个新数组,这么些新数组是由七个或更大多组组合而成的。
var a1 = [1,2,3,4];
var a2 = a1.concat(“5”,’6′);
alert(a2); //结果:1,2,3,4,5,6
//2.join():重回字符串值,此中包蕴了连年到手拉手的数组的富有因素,成分由钦点的相间符分隔断来。
var a1 = [1,2,3,4];
var a2 = a1.join();
var a3 = a1.join(“,”);
var a4 = a1.join(“|”);
alert(a2); //结果:1,2,3,4
alert(a3); //结果:1,2,3,4
alert(a4); //结果:1|2|3|4
//3.pop():移除数组中的最终二个因素并再次回到该因素。要是该数组为空,那么将回来
undefined。
var a1 = [1,2,3,4];
var item = a1.pop();
alert(item); //结果:4
alert(a1);//结果:1,2,3
//4.push():将新成分加多(追加)到三个数组中,并回到数组的新长度值。push
方法将以新因素现身的次第增加这几个因素。假使参数之后生可畏为数组,那么该数组将作为单个元素增加到数组中。要是要归拢多个或七个数组中的成分,请使用
concat 方法。
var a1 = [1,2,3,4];
a1.push(5);
a1.push(“6”);
alert(a1);//结果:1,2,3,4,5,6
//5.reverse():再次回到四个因素顺序被反转的 Array 对象。
var a1 = [1,2,3,4];
a1.reverse();
alert(a1);//结果:4,3,2,1
//6.shift():移除数组中的第多少个因素并赶回该因素。
var a1 = [1,2,3,4];
a1.shift();
alert(a1);//结果:2,3,4
//7.unshift():将钦定的要素插入数组起初位置并回到该数组。
var a1 = [1,2,3,4];
a1.unshift(5);
alert(a1);//结果:5,1,2,3,4
//8.slice():重回四个数组的生龙活虎段。a1.slice(start, [end]),slice
方法从来复制到 end 所钦赐的要素,但是不包蕴该因素。借使 start
为负,将它看做 length + start管理,此处 length 为数组的长度。即使 end
为负,就将它当作 length + end 管理,此处 length 为数组的尺寸。假如简单end ,那么 slice 方法将直接复制到 arrayObj 的最后。假如 end 出以后 start
此前,不复制任何因素到新数组中。
var a1 = [1,2,3,4];
var a2 = a1.slice(-1);
var a3 = a1.slice(0,-1);
var a4 = a1.slice(1);
alert(a2);//结果:4
alert(a3);//结果:1,2,3
alert(a4);//结果:2,3,4
//9.splice():从八个数组中移除二个或多少个要素,要是要求,在所移除成分的职位上插入新因素,再次来到所移除的成分。
//arrayObj.splice(start, deleteCount, [item1[, item2[, . . .
[,itemN]]]])
var a1 = [1,2,3,4];
var a2 = a1.splice(1,0);
var a3 = a1.splice(1,1);
var a4 = a1.splice(1,1,”5″);
alert(a2);//结果:
alert(a3);//结果:2
alert(a1);//结果:1,5,4
//10.sort():重回一个因素已经张开了排序的 Array 对象。
var a1 = [2,3,1,4,”b”,”a”];
var a2 = a1.sort();
alert(a2);//结果:1,2,3,4,a,b
//11.toString():再次来到对象的字符串表示。
var a1 = [www.ca88.com,1,2,3,4,”b”,”a”];
var a2 = a1.toString();
alert(a2);//结果:1,2,3,4,b,a
//12.valueOf():重返内定对象的原始值。
var a1 = [1,2,3,4,”b”,”a”];
var a2 = a1.valueOf();
alert(a2);//结果:1,2,3,4,b,a

indexOf扩展:

复制代码 代码如下:

if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item,
i) {
i || (i = 0);
var length = this.length;
if (i < 0) i = length + i;
for (; i < length; i++)
if (this[i] === item) return i;
return -1;
};
function testIndexOf()
{
var a =[1,2,3,4];
alert(a.indexOf(3));
}
<input type=”button” value=”测量检验获取数组下标” onclick=”testIndexOf()”
/>

1.声称5法:只针对黄金时代维数组,当然还会有二维三个维度,这里就不做解释了 复制代码
代码如下: va…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图