'Mutate nested deep object
I have this object
const a = {
elementErrors: {
errorMessages: [],
errors: {
project: "Issues with this Issue Type must be created in the same project as the parent."
}
},
issueKey: "JP-55",
status: 400
}
and I want to mutate it so that the nested project property includes the issueKey property at the end of the string, something like "Issues with this Issue Type must be created in the same project as the parent (JP-55)."
I know I should show that I tried and I did but I haven't managed to come with the beginning of a solution.
The final object would look like this:
const a = {
elementErrors: {
errorMessages: [],
errors: {
project: "Issues with this Issue Type must be created in the same project as the parent (JP-55)."
}
},
issueKey: "JP-55",
status: 400
}
Many thanks
Solution 1:[1]
You can use the += operator to 'add' something to the end of the string.
a.elementErrors.errors.project += ` (${a.issueKey})`;
let a = {
elementErrors: {
errorMessages: [],
errors: {
project: "Issues with this Issue Type must be created in the same project as the parent."
}
},
issueKey: "JP-55",
status: 400
}
a.elementErrors.errors.project += ` (${a.issueKey})`;
console.log(a);
Solution 2:[2]
You want to compute a new property based on some other values. Just try to access and override it.
If you always have a dot at the end, you can use a mix of split() and template literals.
const a = {
elementErrors: {
errorMessages: [],
errors: {
project: "Issues with this Issue Type must be created in the same project as the parent."
}
},
issueKey: "JP-55",
status: 400
}
a.elementErrors.errors.project = `${a.elementErrors.errors.project.split('.')[0]} (${a.issueKey}).`;
console.log(a);
PS: Above code will break if there is no .
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | 0stone0 |
| Solution 2 | Tushar Shahi |
