JavaScript-12-slice(浅拷贝)和splice(替换)

slice

  1. slice(start,end) 浅拷贝:从 start 开始 到 end 拷贝,不包括 end
    复制一个数组(或者一部分)-返回一个浅复制-start闭end开

    slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)

  2. 如果该元素是个对象引用(不是实际的对象),slice会拷贝这个对象引用到新的数组里。

var fr={name:"apple",account:4,about:{color:"red",size:3.3}};

var myfr=[fr,2,"cheery condition","purchased 1997"];
var newfr=myfr.slice(0,2);
console.log(' myfr = ' + JSON.stringify(myfr)); /* myfr = [{"name":"apple","account":4,"about":{"color":"red","size":3.3}},2,"cheery condition","purchased 1997"] */
console.log(' newfr = ' + JSON.stringify(newfr)); /* newfr = [{"name":"apple","account":4,"about":{"color":"red","size":3.3}},2] */
console.log(' myfr[0].name = ' + JSON.stringify(myfr[0].name)); /* myfr[0].name = "apple" */
console.log('newfr[0].name = ' + JSON.stringify(newfr[0].name)); /* newfr[0].name = "apple" */

myfr[0].name='orange';
console.log('the new name of myfr is ' + myfr[0].name); /* the new name of myfr is orange */

console.log(' myfr[0].name = ' + JSON.stringify(myfr[0].name)); /* myfr[0].name = "orange" */
console.log('newfr[0].name = ' + JSON.stringify(newfr[0].name)); /* newfr[0].name = "orange" */

myfr[1]=4;
console.log('the new name of myfr is ' + myfr[1]); /* the new name of myfr is 4 */

console.log(' myfr[1] = ' + JSON.stringify(myfr[1])); /*  myfr[1] = 4 */
console.log('newfr[1] = ' + JSON.stringify(newfr[1]));  /* newfr[1] = 2 */

splice

  1. splice(start,deletecount,…items):从 start 开始删除 deletecount 个内容,然后从 start 位置上插入后面所有 items 值
  2. start 如果大于数组下标则表示数组的最大下标 +1
  3. deletecount:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
var fr=['apple','orange','water','banana'];
console.log(fr);
/* [ 'apple', 'orange', 'water', 'banana' ] */

/* 1. 当deletecount为0或负数时,默认为0 */
fr.splice(1,0,'pear');
console.log(fr);
/* [ 'apple', 'pear', 'orange', 'water', 'banana' ] */

fr.splice(2,-12,'green_apple');
console.log(fr);
/* [ 'apple', 'pear', 'green_apple', 'orange', 'water', 'banana' ] */

/* 2. 从 start 开始 删除 deletecount个,然后把 items 插入进去*/
fr.splice(2,2,'0test1','0test1','0test3');
console.log(fr);
/* [ 'apple', 'pear', '0test1', '0test1', '0test3', 'water', 'banana' ] */~
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值