最近比较闲,将所学的知识进行了总结,这篇文章概括了数组的不同操作方法,concat()、slice()和splice(),有需要的朋友可以参考一下,希望对你有用。
concat()方法
concat()方法:基于当前数组中所有项创建新数组。
具体过程为:先创建数组的一个副本,若是concat()存在参数,将接收到的参数添加到副本的末尾,然后返回新构建的数组;若是没有传递参数,仅仅复制当前数组并返回副本数组。
concat()中的参数可以是一个新的数组也可以是一个字符串。
var colors = ["red","green","blue"]; var colors2 = colors.concat("yellow",["black","brown"]); alert(colors); alert(colors2);
结果为colors为数组[“red”,”green”,”blue”];
colors2为数组[“red”,”green”,”blue”,”yellow”,”black”,”brown”];
concat()方法只是用当前数组重新创建一个新的数组,因此当前数组保持不变(colors数组不变)。
slice()方法
slice()方法:基于当前数组中的一个或多个项创建一个新数组。
slice()方法中可以有一个或者两个参数(代表数组的索引值,0,1,2……)。接收一个参数时:返回当前数组中从此参数位置开始到当前数组末尾间所有项。接收两个参数时:返回当前数组中两个参数位置间的所有项,但不返回第二个参数位置的项。
参数也可以为负数,表示从末尾算起,-1代表最后一个,使用方法和正数一样。
var colors = ["red","green","blue","yellow","black","brown"]; var colors2 = colors.slice(2); var colors3 = colors.slice(1,4); var colors4 = colors.slice(2,-2); var colors5 = colors.slice(-3,-1); console.log(colors2); console.log(colors3); console.log(colors4); console.log(colors5);
结果为:[“blue”, “yellow”, “black”, “brown”]
[“green”, “blue”, “yellow”]
[“blue”, “yellow”]
[“yellow”, “black”]
另外slice()方法还可用于对数组的移除
Array.prototype.remove = function(from, to) { var rest = this.slice((to || from) + 1 || this.length); this.length = from <0 ? this.length + from : from; return this.push.apply(this, rest); };
对于
rest = this.slice((to || from) + 1 || this.length);
若to不等于0,(to||from)就等于to,且to+1不等于0,则((to || from) + 1 || this.length)为to+1),若to+1=0,((to || from) + 1 || this.length)为this.length;
若to=0,(to||from)取from,若from+1不等于0,((to || from) + 1 || this.length)为from+1,若from+1=0, ((to || from) + 1 || this.length)为this.length。
splice()方法
splice()主要用途是向当前数组的中间插入项,可以进行删除、插入、替换操作。会返回一个数组,包含从原始项中删除的项(若果没有删除,返回一个空数组)
删除:两个参数,删除起始项的位置和删除的项数。
var colors = ["red","green","blue"]; var removed = colors.splice(1,2); alert(colors); //red alert(removed); //green,blue
插入:在指定位置插入任意数量项,包括两个基本参数(即删除操作中的两个参数类型)和要插入项的参数,两个基本参数为起始位置和0(要删除的项数应为0项),要插入的项参数可以是任意个(”red”,”green”,”blue”)。
var colors = ["red","green","blue"]; var removed = colors.splice(1,0,"yellow","orange"); alert(colors); //"red","yellow","orange","green","blue" alert(removed); //空数组
替换:向指定位置插入任意数量的项同时删除任意数量的项,插入项数和删除项数可以不同。参数包括两个基本参数(即删除操作中的两个参数类型)和要插入项的参数。
var colors = ["red","green","blue"]; var removed = colors.splice(1,1,"purple","black"); alert(colors); //"red","purple","black","blue" alert(removed); //"green"
其实总的理解是splice()方法包含两个删除项基本参数和任意个插入项参数,两个删除项基本参数中第一个指定删除位置,第二个指定删除个数,如果个数为0,自然不删除,只有指定位置功能了。任意个插入项参数代表要插入的项值,数量不限,可省略,省略时splice()方法只进行删除操作。
以上是深入理解JS数组操作方法 concat()、slice()、splice()的详细内容。更多信息请关注PHP中文网其他相关文章!