最近比较闲,将所学的知识进行了总结,这篇文章概括了数组的不同操作方法,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()的详细内容,更多请关注Work网其它相关文章!

09-16 16:19