最近在开发的时候发现js中的循环操作会改变原数组,var一个变量承接也不行

甚至连map方法都会改变原数组,下面是解决方法

let a = ['a','b','c']
let b = [[2, 0, 0],[0, 0, 0],[2, 2, 0],[1, 0, 0],[0, 1, 2]]
//需求   将a b数组操作变成下面的样子
// [
//     [['a', 0, 0],['a', 0, 0],['a', 2, 0],['a', 0, 0],['a', 1, 2]],
//     [[2, 'b', 0],[0, 'b', 0],[2, 'b', 0],[1, 'b', 0],[0, 'b', 2]],
//     [[2, 0, 'c'],[0, 0, 'c'],[2, 2, 'c'],[1, 0, 'c'],[0, 1, 'c']]
// ]let lastArr = a.map((item,index,arr)=>{return b.map((item1,index1,arr1)=>{var arr = item1.slice();arr[index] = itemreturn arr})
})
console.log(lastArr);
console.log(b);关键在于这个slice()方法 可以深复制,摆脱与之前数组的关联性记下,以便不时之需

转载于:https://www.cnblogs.com/zddzz/p/11101816.html

js操作改变原数组的解决方法相关推荐

  1. js中改变原数组的方法以及解决改变原数组的方法

    js中改变原数组的方法以及解决改变原数组的方法 参考文章: (1)js中改变原数组的方法以及解决改变原数组的方法 (2)https://www.cnblogs.com/Ingots/p/1151701 ...

  2. 不改变原数组的一些方法

    改变原数组 push / pop / shift / unshift / sort / reverse / splice 不改变原数组 concat / join --> split / toS ...

  3. js不改变原数组的情况,添加或删除指定的元素

    通过扩展运算符和fliter来达到不改变原数组的情况下,添加和删除元素 1.添加元素 var numList = [1, 2, 3, 4, 5, 6, 7, 8, 9]// 第一种方案 functio ...

  4. JS数组方法中哪些会改变原数组,哪些不会?

    前言 作为一名前端开发人员,我们每天都会与数组打交道.JS 也提供了很多操作数组的原生 API 供我们调用.在这些方法里面,有的方法会改变原数组,有些不会改变原数组.别看这一点小小的区别,往往会造成巨 ...

  5. html设置数组的方法,js改变原数组的方法有哪些?

    js改变原数组的方法 1.pop() pop():删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值.如果数组已经为空,则 pop() 不 改变数组,并返回 un ...

  6. JS中会改变原数组和原字符串的API方法总结

    1.会改变原数组的方法 arr.push(item1,item2,·····,itemx) arr.pop() arr.unshift(item1,item2,·····,itemx) arr.shi ...

  7. js数组方法-改变原数组和不改变原数组的方法整理

    改变原数组: pop():   删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值.如果数组已经为空,则 pop() 不 改变数组,并返回 undefined ...

  8. js中会改变原数组的方法及不改变原数组的方法整理

    改变原数组: 1.pop():删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值.如果数组已经为空,则 pop() 不 改变数组,并返回 undefined 值. ...

  9. js 数组操作方法(不改变原数组与改变原数组方法)

    一: 不改变原数组的方法 1. concat() 方法用于连接两个或多个数组 let a =[1,2,3], b=[4,5,6]; let c = a.concat(b); console.log(a ...

最新文章

  1. 简单排查定位linux系统的性能瓶颈
  2. 单元测试如何保证了易用的API
  3. div+css相对定位和绝对定位
  4. php正则判断字符串是否含有中文
  5. 深刻理解:C#中的委托、事件
  6. 《图解CSS3:核心技术与案例实战》
  7. shell+html+div+css实现数据库冷备文件检查
  8. Mimikatz 非官方指南和命令参考_Part1
  9. 探究requestDisallowInterceptTouchEvent失效的原因
  10. 非系统盘根目录出现Msdia80.dll文件如何处理
  11. 最小割集stoer_wagner算法
  12. 标准SPI、DUAL SPI、Quad SPI;NorFlash、NandFlash、eMMC闪存的比较与区别
  13. java正则表达式逗号_java – 接受逗号或分号分隔值的正则表达式模式
  14. dos u盘测试软件,u盘DOS启动盘制作工具(BootFlashDos)
  15. 【NLP】中文分词方法:规则分词(正向最大匹配、逆向最大匹配、双向最大匹配)
  16. http 阮一峰_JavaScript 标准参考教程(alpha) 阮一峰
  17. 问题——Word中一级标题离页眉很近
  18. GIC/ITS代码分析(1)MADT表
  19. win11断网自动重启
  20. iview button根据条件 disabled可用或者不可用

热门文章

  1. 【原创】大叔经验分享(33)hive select count为0
  2. 「PKUSC2018」星际穿越 (70分做法)
  3. WCF系列之.net(3.0/3.5)Rest使用示例
  4. Silverlight Dispatcher 类
  5. LINUX操作系统手机刷机包制作、修改方法
  6. 802.11b标准简介
  7. 多文件目录下makefile文件递归执行编译所有c文件 很不错
  8. 10.14.2 快捷键,环境变量等
  9. python字典值的和计算_第一章Python数据结构和算法(字典的运算)
  10. Cow Toll Paths(floyd变形)