微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自对象数组的javascript深度复制成员

如何解决来自对象数组的javascript深度复制成员

我有一个对象数组,看起来像

[
  {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); 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。