美文网首页
对于数组的splice方法如何形象理解

对于数组的splice方法如何形象理解

作者: 小牧羊爱吃瓜 | 来源:发表于2022-05-10 17:07 被阅读0次

splice本身的词义我自己的理解就是粘合,把两样东西拼接在一起。


image.png

所以splice这个方法,我会看成像医生拿着手术刀在对数组做手术一样,尤其是单词中的p很像手术刀。

语法层面上讲,splice有三个参数,开始位置,长度,和多个需要加入数组的元素。开始位置必须要有,正着数从0开始计数,倒着数从-1开始计数;后面两个参数都是可选,长度可以为0,负数当成0一样处理。

这三个参数就像是告诉医生,你要从哪个位置开始对数组切割,切割多长,切割完之后这段位置你还要不要放别的东西进来,结束后对原数组缝合,你切割下来的东西我会通过返回值给到你。

所以splice是会改变原数组的,并且它的返回值就是所谓的 “由被删除的元素组成的一个数组。如果没有删除元素,则返回空数组。”

从例子解读一下:
1、arr.splice(2)
我的理解:告诉医生在下标为2的地方前开始切割(就是下标为2的那个前面的逗号,不是后面的逗号),一直切到最后,也不用放别的东西进来。切下来的东西返回给我。

var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2);

// 运算后的 myFish: ["angel", "clown"]
// 被删除的元素: ["mandarin", "sturgeon"]

所以:myFish会改变,变成["angel", "clown"],splice返回值是["mandarin", "sturgeon"]

2、arr.splice(-2, 1)
我的理解:倒着数(下标从1开始记)下标为2的地方前开始切割,切1个长度,也不用替换(不用放别的东西进来)。切下来的东西返回给我。

var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(-2, 1);

// 运算后的 myFish: ["angel", "clown", "sturgeon"]
// 被删除的元素: ["mandarin"]

所以:myFish改变了,变成["angel", "clown", "sturgeon"];splice返回值["mandarin"]

3、arr.splice(0, 2, 'parrot', 'anemone', 'blue')
我的理解:下标为0的地方前开始切割,切2个长度,被切的地方放入'parrot', 'anemone', 'blue',切下来的东西返回给我。

var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');

// 运算后的 myFish: ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
// 被删除的元素: ["angel", "clown"]

所以:原数组被缝合成["parrot", "anemone", "blue", "trumpet", "sturgeon"],splice返回["angel", "clown"]

4、arr.splice(2, 0, "drum")
我的理解:下标为2的地方前开始切割,切0个长度,那就是不操作到后面的元素,在这里切断就可以了,被切断的地方放入'drum',切下来的东西返回给我,没有就是空数组。

var myFish = ["angel", "clown", "mandarin", "sturgeon"];
var removed = myFish.splice(2, 0, "drum");

// 运算后的 myFish: ["angel", "clown", "drum", "mandarin", "sturgeon"]
// 被删除的元素: [], 没有元素被删除

所以:原数组表现出来像是新增,本质还是切割放入。

相关文章

网友评论

      本文标题:对于数组的splice方法如何形象理解

      本文链接:https://www.haomeiwen.com/subject/cpwlurtx.html