前端经典面试——splice&concat用法详解

下面程序在控制台输出的结果是什么?

这里写图片描述

答案是D.40,50

详解:面对这样一个简单但容易混淆的面试试题,许多朋友会选择A.10,20,30,60,70,80;
认为splice将从第3个元素开始的2个元素替换成60,70;但是往往忽略了splice返回的是被删除的元素组成的临时数组,也就是说arr1获得的是被删除的值40,50;即arr1=[40,50];
也有许多朋友注意到了这一点,但是却选了C.40,50,80;那么就是忽略了concat不修改原数组,总是返回一个新数组。所以选D.40,50。

Splice用法详解:
Splice具有删除、插入、替换三种功能
注:splice直接修改原数组对象
1. 删除: arr.splice(starti,n) var deletes=arr.splice(starti.n)
n表示个数。
从starti位置开始,直接删除数组n个元素。
删除arr中starti位置开始后的n个元素。
强调:返回被删除的元素组成的临时数组
但是会返回删除的元素组成的新数组,若是删掉的元素不要,不用赋值。

  1. 插入: arr.splice(starti,0,新值1,新值2,……)
    在arr中starti位置插入新元素
    在starti位置插入新值1,新值2,……
    原starti位置及其之后的元素,被向后顺移
    强调:不支持打散参数中的数组

  2. 替换: arr.splice(starti,n,新值1,新值2,……)
    总是先删除arr中starti位置开始的n个元素,再在starti位置插入新元素。
    删除的元素个数和插入的新元素个数不必相等
    新元素的个数和n不一定相等,数组会自动调整元素的位置和长度
    这里写图片描述

对二维数组来说,splice不会自动打散参数中的数组。

concat拼接数组:var newArr=arr1.concat(arr2,值1,值2,……),此例中arr1不发生改变。会自动打散参数中的数组,以单个元素形式拼接到新数组中。而且打散的方式平级加上去。
强调:concat不修改原数组,总是返回一个新数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值