不包括"red",这是因为拆分操作要从位置 1 开始,即从"green"开始。得到的 colors2 数组包含 1 "green"、"blue"、"yellow"和"purple"。colors3 数组是通过调用 slice()并传入 1 和 4 得到的, 即从位置 1 开始复制到位置 3。因此 colors3 包含"green"、"blue"和"yellow"。
或许最强大的数组方法就属 splice()了,使用它的方式可以有很多种。splice()的主要目的是 在数组中间插入元素,但有 3 种不同的方式使用这个方法。
- 替换。splice()在删除元素的同时可以在指定位置插入新元素,同样要传入 3 个参数:开始位 置、要删除元素的数量和要插入的任意多个元素。要插入的元素数量不一定跟删除的元素数量 一致。比如,splice(2, 1, "red", "green")会在位置 2 删除一个元素,然后从该位置开始 7 向数组中插入"red"和"green"。
- splice()方法始终返回这样一个数组,它包含从数组中被删除的元素(如果没有删除元素,则返 回空数组)。以下示例展示了上述 3 种使用方式。
- 删除。需要给 splice()传 2 个参数:要删除的第一个元素的位置和要删除的元素数量。可以从 数组中删除任意多个元素,比如 splice(0, 2)会删除前两个元素。
- 插入。需要给 splice()传 3 个参数:开始位置、0(要删除的元素数量)和要插入的元素,可 以在数组中指定的位置插入元素。第三个参数之后还可以传第四个、第五个参数,乃至任意多 个要插入的元素。比如,splice(2, 0, "red", "green")会从数组位置 2 开始插入字符串 "red"和"green"。
注意 如果slice()的参数有负值,那么就以数值长度加上这个负值的结果确定位置。比 如,在包含 5 个元素的数组上调用 slice(-2,-1),就相当于调用 slice(3,4)。如果结 束位置小于开始位置,则返回空数组。
let colors = ["red", "green", "blue"];
let removed = colors.splice(0,1); // 删除第一项 alert(colors); // green,blue alert(removed); // red,只有一个元素的数组
removed = colors.splice(1, 0, "yellow", "orange");
alert(colors);
alert(removed);
// 在位置 1 插入两个元素
// green,yellow,orange,blue // 空数组
removed = colors.splice(1, 1, "red", "purple"); // 插入两个值,删除一个元素 alert(colors); // green,red,purple,orange,blue alert(removed); // yellow,只有一个元素的数组
这个例子中,colors 数组一开始包含 3 个元素。第一次调用 splice()时,只删除了第一项,colors 中还有"green"和"blue"。第二次调用 slice()时,在位置 1 插入两项,然后 colors 包含"green"、 12 "yellow"、"orange"和"blue"。
这次没删除任何项,因此返回空数组。最后一次调用 splice()时 删除了位置 1 上的一项,同时又插入了"red"和"purple"。最后,colors 数组包含"green"、"red"、 "purple"、"orange"和"blue"。
标签:splice,slice,函数,元素,js,colors,green,数组,red From: https://blog.51cto.com/u_16255561/9233122