(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)