给一个数组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] = text
for (let i = index; i < arr.length; i++) {
newarr[i + 1] = arr[i]
}
return newarr
}
console.log(change(arr, 2, 'z'));

  

第二种办法:直接循环原数组,判断传入要替换的索引值,如果这个i小于这个索引值,直接复制到新数组,等于这个值直接将添加的元素添加,大于这个值的时候新数组赋值的时候索引值加一(因为刚才不是加了一个元素嘛)

let arr = [1, 2, 3, 4, 5]
let newChange = (arr, index, text) => {
let narr = []
for (let i = 0; i < arr.length; i++) {
if (i < index) {
narr[i] = arr[i]
}
else if (i == index) {
narr[i] = text
}
else if (i > index) {
newarr[i + 1] = arr[i]
}
}
return newarr
}
console.log(newChange(arr, 2, 'z'));

  

记面试的一道JS题的更多相关文章

  1. 一道js题

    <script> var a = 5; function test(){ this.a = 10; a = 15 this.func = function(){ var a = 20 ; ...

  2. 阿里巴巴Web前端面试的一道JS题目,求解答!!!

    题目大概是这种: function outer(){ return inner; var inner = "a"; function inner(){}; inner = 9; } ...

  3. 一道js题(引用类型、基本类型、包装对象、函数赋值)

    var a = 1; var obj = {     b: 2 }; var fn = function () {}; fn.c = 3;   function test(x, y, z) {     ...

  4. 常让人误解的一道js小题

    一道小题引发的深思 今天无意中看到一个js笔试题,不由得想起初学js那会被各种题目狂虐的心酸,虽说现在也会被笔试题所虐,但毕竟比之前好了很多,下面就是我的个人理解,欢迎拍砖.指正: var x = 1 ...

  5. 一道JS面试题引发的血案

    刚入职新公司,属于公司萌新一枚,一天下午对着屏幕看代码架构时. BI项目组长给我看了一道面试别人的JS面试题. 虽然答对了,但把理由说错了,照样不及格. 话不多说,直接上题: var a = 1; s ...

  6. 2017、2018面试分享(js面试题记录)记得点赞分享哦;让更多的人看到~~

    2017面试分享(js面试题记录) 1. 最简单的一道题 '11' * 2 'a8' * 3 var a = 2, b = 3; var c = a+++b; // c = 5 2. 一道this的问 ...

  7. Android开发面试经——5.常见面试官提问Android题①

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/f ...

  8. 又一道简单题&&Ladygod(两道思维水题)

    Ladygod Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

  9. 记ByteCTF中的Node题

    记ByteCTF中的Node题 我总觉得字节是跟Node过不去了,初赛和决赛都整了个Node题目,当然PHP.Java都是必不可少的,只是我觉得Node类型的比较少见,所以感觉挺新鲜的. Nothin ...

随机推荐

  1. 4shell中的特殊变量

    1.位置参数 2.其他特殊变量 2.1 用法举栗 2.2 $* 和 $@ 的区别 2.3 $?的用法 1.位置参数 运行 Shell 脚本文件时我们可以给它传递一些参数,这些参数在脚本文件内部可以使用 ...

  2. php安裝7.3版本

    CentOS 安装 EPEL 源: yum install epel-release 安装 REMI 源: CentOS 7: yum install http://rpms.remirepo.net ...

  3. WPF教程二:理解WPF的布局系统和常用的Panel布局

    WPF的布局系统 了解元素的测量和排列方式是理解布局的第一步.在测量(measure)阶段容器遍历所有子元素,并询问子元素它们所期望的尺寸.在排列(arrange)阶段,容器在合适的位置放置子元素.理 ...

  4. 20道Java实习生笔试面试选择题(内附答案解析)

    ​1.以下对继承的描述错误的是(A) A.Java中的继承允许一个子类继承多个父类 B.父类更具有通用性,子类更具体 C.Java中的继承存在的传递性 D.当实例化子类时会递归调用父类中的构造方法 解 ...

  5. ESP32-FAT文件系统使用磨损均衡存储文件笔记

    基于ESP-IDF4.1 1 /* 2 FAT文件系统存储文件,使用磨损均衡库wear-leveling 3 */ 4 5 #include <stdlib.h> 6 #include & ...

  6. mybatis复杂映射

    1. 类型名对应 当实体类与表中字段完全一致时,mapper文件里返回类型用resultType,否则要用resultMap,并且建立resultMap映射 package com.rf.domain ...

  7. Linux常用命令 day day up系列3

    一.命令执行的优先级二.Linux目录结构三.cat--查看文件内容四.more--查看文件内容五.less--查看文件内容六.head.tail--查看文件内容七.wc--统计文件内容八.grep- ...

  8. C语言:toascii()函数

    /* 头文件:#include <ctype.h> 定义函数:int toascii(int c); 函数说明:toascii()会将参数c 转换成7 位的unsigned char 值, ...

  9. 高性能内存图数据库RedisGraph(一)

    作为一种简单.通用的数据结构,图可以表示数据对象之间的复杂关系.生物信息学.计算机网络和社交媒体等领域中产生的大量数据,往往是相互连接.关系复杂且低结构化的,这类数据对传统数据库而言十分棘手,一个简单 ...

  10. Oracle执行计划总结

    一.ORACLE中常见执行计划 表访问的执行计划 1.table access full:全表扫描.它会访问表中的每一条记录. 2.table access by user rowid:输入源rowi ...