so i’ve got the following array
// movie.json // example output (beautified) from: /createvote movie#1,movie#2,movie#3,movie#4 [ { "label": "movie#1", "value": "movie#1", "voteCount": 0 }, { "label": "movie#2", "value": "movie#2", "voteCount": 0 }, { "label": "movie#3", "value": "movie#3", "voteCount": 0 }, { "label": "movie#4", "value": "movie#4", "voteCount": 0 } ]
created using
movieListArr.map(x => ({label: x, value: x, voteCount: 0})); fs.writeFile("movie.json", JSON.stringify( labelArr ), (err) => { if (err) console.log(err); else { console.log("writeFile sucess:"); console.log(fs.readFileSync("movie.json", "utf8")); } });
and with the following I’m trying to compare it to
interaction.values[0]; // example output: movie#3
that gives me what a person has voted.
what I’m trying to do is if a user votes something ex: movie#3
I want to look through movie.json
and increment voteCount by one for movie#3
. I’ve tried searching for a solution already and honestly, I can’t seem to put my finger on it. If there’s a better solution to doing this instead of through .json
files I’m all ears too 🙂
Advertisement
Answer
You can use Array.find
to find the item in the array whose value
property is 'movie#3'
, then increment it’s voteCount
property.
const movies=[{label:"movie#1",value:"movie#1",voteCount:0},{label:"movie#2",value:"movie#2",voteCount:0},{label:"movie#3",value:"movie#3",voteCount:0},{label:"movie#4",value:"movie#4",voteCount:0}]; const choice = 'movie#3' function vote(movieList, vote){ movieList.find(e => e.value == vote).voteCount++; } vote(movies, choice) console.log(movies)