I would like to concatenate one item in the array with another one and remove the second item from the array. When I tried the old way, I get the state mutation detected error. When I tried the Object.assign
, I am unable to get the values concatenated.
EDIT:
What is the equivalent of interests[makeIndex].value = ``${interests[makeIndex].value}, ${interests[secondPreferredMakeIndex].value}``
using Object.assign
?
For e.g., for the below code segment the output I expect is,
Preferred Make - before Chevrolet
Preferred Make - after Chevrolet, Porsche
// Interests array from state
let interests = [
{
type: 'Preferred Make',
value: 'Chevrolet',
},
{
type: 'Second Preferred Make',
value: 'Porsche',
},
{
type: 'Preferred Model',
value: 'Corvette',
},
{
type: 'Second Preferred Model',
value: 'Macan',
}
];
console.log("Preferred Make - before", interests[0].value);
const secondPreferredMakeIndex = interests
.map(x => x.type)
.indexOf('Second Preferred Make');
if (secondPreferredMakeIndex > -1) {
let makeIndex = interests.map(x => x.type).indexOf('Preferred Make');
if (makeIndex > -1) {
// For the below, I get mutation error. But it works
// interests[makeIndex].value = `${interests[makeIndex].value}, ${interests[secondPreferredMakeIndex].value}`;
// Concatenate and use Object.assign to avoid mutation
interests = Object.assign([], interests, { makeIndex: `${interests[makeIndex].value}, ${interests[secondPreferredMakeIndex].value}` });
/*
// Tried the below as well in vain
interests = Object.assign([], interests, {
makeIndex: {
type: 'Preferred Make',
value: `${interests[makeIndex].value}, ${interests[secondPreferredMakeIndex].value}`
},
});
*/
}
// Delete the second Preferred Make
interests.splice(secondPreferredMakeIndex, 1);
}
console.log("Preferred Make - after", interests[0].value);
Appreciate the helps