If I want to append to an existing property that’s an array, what’s the cleanest solution?
function adminConditional(user) {
return {
...user,
priority: 1,
access: ['system2']
}
}
console.log(
{
...(adminConditional)({name: "andrew", type: "Admin"}), // function name can vary
access: ['system1'] // always set
}
)
// Expected output:
{
access: ["system1", "system2"],
name: "andrew",
priority: 1,
type: "Admin"
}
// Actual output:
{
access: ["system1"],
name: "andrew",
priority: 1,
type: "Admin"
}
It instead overwrites the index of access with the last assignment.
Advertisement
Answer
You can simplify logic
function adminConditional(user) {
return {
...user,
priority: 1,
access: ['system2', ...user.access]
};
}
console.log(
{
...(adminConditional)({
name: "andrew",
type: "Admin",
access: ['system1']
})
}
)