面试给出的一道题 ,
【JS-数组中插入一个值】给一个数组arr=[1,2,3,4,5] , 索引第二位插入'z',设计一个函数change , 调用change(arr, 2, 'z')返回一个新数组[1,2,'z',3,4,5]
我想了两种办法:
第一种办法:先插入要添加的元素 , 再在将原数组后面的值添加在新数组上(注意:复制新数组不能浅拷贝 , 浅拷贝只是复制内存地址 , 修改新数组的话原数组也会改变)
let arr = [1, 2, 3, 4, 5]// let newarr = arr 浅拷贝(×)let newarr = JSON.parse(JSON.stringify(arr))// let newarr = []// for (let i = 0; i < arr.length; i++) {//newarr[i] = arr[i]// }let change = (arr, index, text) => {newarr[index] = textfor (let i = index; i < arr.length; i++) {newarr[i + 1] = arr[i]}return newarr}console.log(change(arr, 2, 'z'));
第二种办法:直接循环原数组 , 判断传入要替换的索引值
- 如果i小于这个索引值 , 直接赋值到新数组
- 直到等于这个值的时候 , 将添加的元素添加到数组
- 大于这个值的时候 , 新数组赋值的时候索引值加一(因为刚才不是加了一个元素嘛) , 继续遍历完原数组剩下的值
所以splice方法不仅可以删除或替换数组元素 , 也可以添加数组元素 。
跟splice有点像的两个方法
- split方法是用来分割字符串的 , string.splite(字符串或正则表达式,[指定返回的数组的最大长度])
- slice方法用来截取数组 , arrar.slice(参数1 , [参数2]) slice可以传两个参数
- 如果只传一个参数 , 就从这个索引截取到数组末尾;
- 如果有两个参数 , 则从第一个参数到第二个参数的索引(不包含第二个参数索引位置的项;
- 如果有负数 , 则真正的索引是负数加上数组长度的值 。
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
