簡體   English   中英

javascript 對象數組的深拷貝成員

[英]javascript deep copy members from array of objects

我有一個對象數組,看起來像

[
  {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]}因為你的 object 只在一級,這將做一個深拷貝,如果它是嵌套的,你可以使用loadash 的 cloneDeep 做一個深拷貝。

在將 object 分配給變量的任何地方,它都是淺拷貝

您可以使用loadsh cloneDeep方法來復制對象或數組。

import _ from 'loadsh';
let arr = [
            {name: 'temp'}
            {name: 'temp1}
       ]

let copyArr = _.cloneDeep(arr);

使用JSON.parse(JSON.stringify(your_array_here))的對象嵌套數組的深層復制

參考鏈接 Deep Copy & Shallow Copy

 //Deep Clone let a = [{ x:{z:1}, y: 2}]; let b = JSON.parse(JSON.stringify(a)); b[0].xz=0 console.log(a); console.log(b);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM