问题描述
[
{Time:,//time stamp
psi: //pressure value at the time
},... //other objects in the array the same
]
该数组被命名为“数据”
如果我将数组的一部分切成薄片,并传递给它们以找到局部最大值和最小值,那么深度复制下面的代码是否会复制并返回局部极限值?如何验证?
var extreme = findLocalExtreme(data.slice(0,10)); //slice(0,10) for example,shallow copy
function findLocalExtreme(slicedArr){
//error control skipped,the array Could be empty or only 1 member
let tempMax = slicedArr[0]; //would the "=" deep copy the object or just shallow copy?
let tempMin = slicedArr[0];
let slicedArrLength = slicedArr.length;
for (let i = 1; i < slicedArrLength; i++){
if (slicedArr[i].psi > tempMax.psi){
tempMax = slicedArr[I]; //deep copy or shallow copy?
}
if (slicedArr[i].psi < tempMin.psi){
tempMin = slicedArr[i];
}
}
return {
Max: tempMax,Min: tempMin //is the value assignment in returned class deep copy,or still shallow copy?
}
}
任何建议欢迎。
解决方法
let tempMax = slicedArr[0]
只会做浅拷贝,而你可以做
let tempMax = {...slicedArr[0]}
由于您的对象仅处于第一级,因此将进行深度复制,
如果是嵌套的,则可以使用loadash的cloneDeep进行深度复制。
在任何将对象关联到变量的地方,它都是浅表副本
,您可以使用loadsh
cloneDeep
方法复制对象或数组。
import _ from 'loadsh';
let arr = [
{name: 'temp'}
{name: 'temp1}
]
let copyArr = _.cloneDeep(arr);
,
使用JSON.parse(JSON.stringify(your_array_here))
的对象嵌套数组的深层复制
reference link Deep Copy & Shallow Copy
//Deep Clone
let a = [{ x:{z:1},y: 2}];
let b = JSON.parse(JSON.stringify(a));
b[0].x.z=0
console.log(a);
console.log(b);