我有一个对象数组 A
我有 2 个不同的绘图函数,它们以自己的方式完全改变了 A。 我想保持 A 不变。是否有最佳做法如何做到这一点?我目前的解决方案有点不自然:
var A;//Should stay the same always
drawGraphX(A){
//Modifying A here to draw but I would like the original A to stay the same
B=JSON.parse(JSON.stringify(A));
//So I do it with B
}
drawGraphY(A){
//Modifying A here to draw
B=JSON.parse(JSON.stringify(A));
//So I do it with B
}
最佳答案
我怀疑这里的真正答案是您根本不应该更改函数内的数据!
让我们假设 A
是一个用于图表的 x/y 点数组
var A = [{x:1,y:1},{x:2,y:2},{x:3,y:3}];
而您的函数只需要 x
- 您是这样做的吗:
function drawGraphX(A){
for(var i=0;i<A.length;i++)
A[i] = A[i].x;
// now draw the graph
}
在上面的示例中,是的,您将更改 A 的源,因为您刚刚将引用传递给函数并更新了该引用数组的元素。这是不好的做法,你应该做的是:
function drawGraphX(A){
var data = A.map(function(e){
return e.x;
});
// data is an array of just the x values
}
关于javascript - 将数组作为参数粘贴到函数 Javascript 时保持数组不变的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41573059/