I'm proposing a spread-like operator ...=
for (re)assignment on Arrays or Objects
Similar to the existing convention of regenerative consolidation:
/* Arrays */
let x = [1, 2, 3];
x = [...x, 4, 5, 6];
// Result: [1, 2, 3, 4, 5, 6]
/* Objects */
let y = {a:1, b:2, c:3};
y = {...y, {b:5, c:6, d:7}}
// Result: {a:4, b:5, c:6, d:7}
I propose the following shorthand syntax for spread (re)assignment
/* Arrays will act in a manner of bulk appending values */
let x = [1, 2, 3];
x ...= [4, 5, 6];
// Logic: [1, 2, 3, ...[4, 5, 6]];
// Result: [1, 2, 3, 4, 5, 6]
/* Objects will act in a manner of bulk `property:value` (re)assignment */
let y = {a:1, b:2, c:3};
y ...= {b:5, c:6, d:7};
// Logic: {a:1, b:2, c:3, ...{b:5, c:6, d:7}};
// Result: {a:4, b:5, c:6, d:7}
With this proposed syntax, I suggest the ability to (re)populate Arrays and Objects (using this operator) without having to fully re-assign the variable, thus allowing for usage on arrays and objects declared using const
The following syntax will only work on variables declared using var
and let
. It will throw an error for variables declared using const