javascript - 如何克服 Js 中的数组突变
问题描述
试图克服 js 函数中列表的突变。几个小时以来,我一直在尝试使用诸如list.slice()
复制要使用的数组之类的技术。以及其他方法。我已将我的功能归结为此处显示的更基本版本:
list = [[1,2],[3,4],[5,6]]
function listadjust(b) {
for (i = 0; i < b.length; i++) {
if (i == (b.length-1)) {
b[i][1] = 1;
}
}
return b;
}
它的意思是采用多维数组输入并更改最后一个元素的第二个元素。(上面显示的变量list
中的 6。任何克服这个问题的方法都会很棒。我不是程序员,只需要一个非常简单的工具,并且对它为什么不起作用感到失望。谢谢!
解决方案
与原始类型(即数字或字符串)不同,数组是引用类型。这意味着当您将数组分配给变量时,您分配的是内存地址而不是实际的数组本身,因此您只需在对数组进行任何修改之前进行深度克隆
list = [[1,2],[3,4],[5,6]]
const clone = (items) => items.map(item => Array.isArray(item) ? clone(item) : item);
function listadjust(b) {
const arr = clone(b)
for (i = 0; i < arr.length; i++) {
if (i == (arr.length-1)) {
arr[i][1] = 1;
}
}
return arr;
}
推荐阅读
- php - 搜索任何表字段中是否存在变量并获取表字段名称
- php - 使用数据库值的 Smarty 计算
- r - 使用 grepl() 从 R 中的数据框中删除值
- java - 如何处理 RequestMapping 中的@Valid 违规行为?
- python - 用于股票市场预测、回归的卷积神经网络
- excel - 从 Excel 电子表格中删除一些图片
- c# - Parent类方法如何订阅子类Event?
- love2d - windows上是否有love2d的分辨率处理库
- html - 从类选择传递数据以获取路线
- javascript - Google Maps API KMZ 文件在点击事件中显示错误数据