JavaScript 数组增加删除

JavaScript 数组增加删除

javaScript的数组本质是一个object,所有的key都是数字,value爱啥啥,所以非常灵活,也没有数组溢出这种事情,除非数组特别大,长度超过int的最大数值, key不够用了。

splice() vs. slice()

slice()

slice()用来取数组的一部分,并且返回一个新的数组,并不会对原来的数组有任何改动
可以接受一个或者两个参数·
slice(start)从index为start的位置截取后半截数组,包括start位置的元素
slice(start, end)从index为start的位置截取到end的数组,包括start位置的元素,但是不包括位置为end的元素

const letters = ['a', 'b', 'c', 'd', 'e'];
const newLetters = letters.slice(2);
console.log(newLetters); // ['c', 'd', 'e']
console.log(letters); //['a', 'b', 'c', 'd', 'e']
//slice并不会改变原来的数组
console.log(letters.slice(2, 4)); // ['c', 'd']
//index为2的元素包含了, 但是不包含index为4的元素
console.log(letters.slice(2, 5)) // ['c', 'd', 'e']
console.log(letters.slice(2, 6)) // ['c', 'd', 'e']
//letters最大index为4,所以当后面一个参数超出数组范围的时候将截取到最后一个元素
console.log(letters.slice(-2));//['d', 'e']
//从倒数第二个开始选,并且包括倒数第二个(第一个参数)
console.log(letters.slice(-4, -2));//['b', 'c']
//从倒数第四个开始选,并且包括倒数第四个(第一个参数),选到倒数第二个,并不包含倒数第二个(第二个参数)
console.log(letters.slice(0, -2));//['a', 'b', 'c']
//从index为0开始选,并且包括letters[0](第一个参数),选到倒数第二个,并不包含倒数第二个(第二个参数)
console.log(letters); //['a', 'b', 'c', 'd', 'e']
//letters并没有改变,打印的都是截取出来的新数组

splice()

splice() 对数组进行截取/删除/替换/添加, 并且在原来数组上进行操作,返回的为被从原来数组里被删除的元素。
可以接受N个参数,其中,第一个参数为要修改的位置, 第二个参数为要删除的个数,第三个以上的参数为要添加的元素。
splice(postion)当只有一个参数的时候,也是截取一部分数组, 具体看下面例子

const letters = ['a', 'b', 'c', 'd', 'e'];
const newLetters = letters.splice(2);
console.log(newLetters); // ['c', 'd', 'e']
console.log(letters); //['a', 'b']
//当只有一个参数的时候,返回值和slice是一样的,但是splice会把原来的数组从index为2之后的切掉
console.log(letters.splice(-1)); //['b']
console.log(letters); //['a']
//当一个参数为负数的时候,也和slice类似,返回值和slice是一样的,数组本身是另外一部分

splice(postion, deleteCount), 从position开始,删除deleteCount个元素(包括position那个元素)
splice(postion , deleteCount, item1, item2, itemN), 从position开始,删除deleteCount个元素, 再添加上item1, item2, itemN这几个元素

常用用法, 一般用来对数组进行操作

const letters = ['a', 'b', 'c', 'd', 'e'];
letters.splice(2, 1);
console.log(letters); //['a', 'b', 'd', 'e']
// 删除从index为2开始算,一个元素
letters.splice(1, 2);
console.log(letters);//['a', 'e']
// 删除从index为1开始算,两个元素
letters.splice(1, 1, 'f');
console.log(letters);//['a', 'f']
//从位置1开始,删除1个元素,再添加一个'f'
letters.splice(1, 1, 'g', 'h', 'i');
console.log(letters);//['a', 'g', 'h', 'i']
//同上
letters.splice(2, 0, 'j', 'k'); 
console.log(letters);//['a', 'g', 'j', 'k', 'h', 'i']
//如果不删除的话,则将要添加的元素从index为2开始添加。原来的index为2 的‘h’被往后顺延。

注意,splice是有返回值的,返回的是被删除的元素:

const letters = ['a', 'b', 'c', 'd', 'e'];
console.log(letters.splice(2, 1)); //['c']
// 此时letters为['a', 'b', 'd', 'e']
console.log(letters.splice(1, 2)); //['b', 'd']
//此时letters为['a', 'e']
console.log(letters.splice(1, 1, 'f')); //['e']
//此时letters为['a', 'f']
console.log(letters.splice(1, 0, 'j', 'k')); //[]
//因为没有删除任何元素,所以是空array
//如果不删除的话,则将要添加的元素从index为2开始添加。原来的index为2 的‘h’被往后顺延。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值