I am writing a CLI application with Nodejs. The user sees a list of items and selects one that they want to be removed. The list they see is generated via a JSON file. The JSON file has one property with an array of actions:
{
"actionList":[
"Action 1","Action 2","Action 3","Action 5","Action 6"]
}
Their input triggers an item to be removed and the file to be re-written with the updated list with fs.writeFileSync
.
Question
When I write to the file WITHOUT {}
, it writes the array to the JSON file without the property actionList
:
The code:
fs.writeFileSync(
path.join(__dirname, "./.todo.json"),
JSON.stringify( actionList , null, 4)
);
The result:
["Action 1","Action 2","Action 3","Action 5","Action 6"]
But when I use {} around actionList, I get the JSON file with the actionList
property.
The code:
fs.writeFileSync(
path.join(__dirname, "./.todo.json"),
JSON.stringify({ actionList }, null, 4)
);
The result:
"actionList":[
"Action 2","Action 3","Action 5","Action 6"]
}
What exactly is the {} doing in this case?
CodePudding user response:
{ actionList }
is the same as { "actionList": actionList }
It is ES6 property shorthand.
Another example: https://alligator.io/js/object-property-shorthand-es6/
So the {}
adds another layer around your object, with a key "actionList"
and the value of the variable actionList
.