Tell us what’s happening:
I’ve added a variable to the function definition to hold the book list being passed in. In the searching I did, I found people were calling it bookList in the function definition and then assigning that to a variable defined within the function, but this has always worked for me to do the same thing without taking as many lines, kind of a variant on DRY. And since the book list array would be passed by value, it won’t modify the original copy of the list.
I’m getting an error message that list.indexOf(bookname) is not a function. Any idea what I’m missing here?
Your code so far
// the global variable
var bookList = ["The Hound of the Baskervilles", "On The Electrodynamics of Moving Bodies", "Philosophiæ Naturalis Principia Mathematica", "Disquisitiones Arithmeticae"];
/* This function should add a book to the list and return the list */
// New parameters should come before the bookName one
// Add your code below this line
function add (list, bookName) {
return list.push(bookName);
// Add your code above this line
}
/* This function should remove a book from the list and return the list */
// New parameters should come before the bookName one
// Add your code below this line
function remove (list, bookName) {
console.log(list);
if (list.indexOf(bookName) >= 0) {
return list.splice(0, 1, bookName);
// Add your code above this line
}
}
var newBookList = add(bookList, 'A Brief History of Time');
var newerBookList = remove(bookList, 'On The Electrodynamics of Moving Bodies');
var newestBookList = remove(add(bookList, 'A Brief History of Time'), 'On The Electrodynamics of Moving Bodies');
console.log(bookList);
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
.
Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions