(js)Array-Object的傳參考傳值

by Shang-De You

JavaScript

const data = [
  {
    label: 'apple',
    value: 'apple'
  },
  {
    label: 'banana',
    value: 'banana'
  }
]

// 修改新物件的欄位值
// 1. deep clone
const newData = JSON.parse(JSON.stringify(data))
newData[0].label = 'aaa'

// 2. Object.assign
/* const newData = Object.assign(data, [])
newData[0].label = 'aaa' */

// 3. map reference
/* const newData = data.map(d => {
  d.label = 'aaa'
  return d
}) */

// 4. map value
/* const newData = data.map(d => {
  return {
    label: 'aaa',
    value: 'vvv'
  }
}) */

// 5. map value
/* const newData = data.map(d => {
  let newD = { ...d }
  newD.label = 'aaa'
  return newD
}) */

// 6. filter
// 陣列本身是傳值
/* const newData = data.filter(d => {
  return d.value === 'apple'
}) */
// 陣列裡的物件還是傳參考!
/* newData[0].label = 'aaa' */



// 印出舊物件
console.log('data', data)
console.log('newData', newData)