// Reference
var a = [{test:1}];
undefined
var b = a ;
undefined
b[0].test = 2
2
b
[{…}]0: {test: 2}length: 1[[Prototype]]: Array(0)
a
[{…}]0: {test: 2}length: 1[[Prototype]]: Array(0)
// reference, although filter returns a new array, object still reference
// Copy
var d = Object.assign({}, a[0])
undefined
d
{test: 33333}
d.test = 4444444
4444444
d
{test: 4444444}
a
[{…}]0: {test: 33333}length: 1[[Prototype]]: Array(0)
// Array.map returns a new array, if non objects.
var a = [1,2,3]
undefined
b = a.map( row=>row)
(3) [1, 2, 3]
b.push(4)
4
b
(4) [1, 2, 3, 4]
a
(3) [1, 2, 3]
// however, if there are objects in the array, they are still by reference
var a = [{test:1}]
undefined
b = a.map(row=>row)
[{…}]
b[0].test = 22
22
b
[{…}]0: {test: 22}length: 1[[Prototype]]: Array(0)
a
[{…}]0: {test: 22}length: 1[[Prototype]]: Array(0)
// To fix use Object.assign in map
var a = [{test:1}]
undefined
b = a.map(row=>Object.assign({},row))
[{…}]
b[0].test = 3333
3333
b
[{…}]0: {test: 3333}length: 1[[Prototype]]: Array(0)
a
[{…}]0: {test: 1}length: 1[[Prototype]]: Array(0)
No comments:
Post a Comment