按值传递JavaScript数组
Passing JavaScript array by value
我有一个问题通过数组数组的值。我使用slice()传递数组的副本,但原始数组仍然被修改。下面是一个小示例:
var test = [[1,2],[3,4]];
function addElement(data) {
$.each(data,function(v,val) {
val.push(1)
});
return data;
};
addElement(test.slice());
我做错了什么?
谢谢你的帮助!
您正在创建外部数组的副本,但它仍然包含对所有相同内部数组的引用。你需要做一个深拷贝。如果你知道你有一个包含数组的数组,你可以这样做:
var test = [
[1, 2],
[3, 4]
];
function copy(val) {
if (Array.isArray(val)) {
return val.map(copy);
} else {
return val;
}
}
function addElement(data) {
$.each(data, function(v, val) {
val.push(1)
});
return data;
};
addElement(copy(test));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
相关文章:
- 如何遍历包含对象的数组-javascript
- 保存数组javascript
- 查找数组javascript中包含的元素类型
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 从多维数组javascript中提取特定值
- 如何在数组javascript中选择伪随机值
- 拆分字符串数组(JavaScript)后未定义
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 使用条件for循环更新数组-Javascript
- 从数组javascript创建新对象
- 用数组(javascript)中的值替换regex捕获
- 从数组[Javascript]的总长度中减去一个干净的数字
- 将一个字符串数组解析为一个新的数组javascript
- 如何将对象转换为对象数组javascript
- 赢得't循环数组javascript
- 从不同的数组 JavaScript 中获取值
- 多维数组 JAVASCRIPT 出了点问题
- 可以't分配给一个对象数组javascript
- 比较数组JavaScript中的对象
- 如何完成缺少(连续)元素的数组|Javascript