関数型プログラミング: 関数からグローバル変数をリファクタリングする
2873 ワード
bookList
がどちらの関数内でも変更されないようにします. add
関数は、渡された配列の末尾に指定された bookName
を追加し、新しい配列 (リスト) を返す必要があります. remove
関数は、渡された配列から指定された bookName
を削除する必要があります. bookName
パラメーターの前に追加する必要があります.var bookList = ["The Hound of the Baskervilles", "On The Electrodynamics of Moving Bodies", "Philosophiæ Naturalis Principia Mathematica", "Disquisitiones Arithmeticae"];
// Change code below this line
function add (bookName) {
bookList.push(bookName);
return bookList;
// Change code above this line
}
// Change code below this line
function remove (bookName) {
var book_index = bookList.indexOf(bookName);
if (book_index >= 0) {
bookList.splice(book_index, 1);
return bookList;
// Change 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);
var bookList = ["The Hound of the Baskervilles", "On The Electrodynamics of Moving Bodies", "Philosophiæ Naturalis Principia Mathematica", "Disquisitiones Arithmeticae"];
function add (books, bookName) {
let copyBooks = [...books] <--- we used a copy of the array in our functions.
copyBooks.push(bookName);
return copyBooks ;
}
function remove (books, bookName) {
let copyBooks = [...books]
var book_index = copyBooks.indexOf(bookName); // <-- is just finding if the book exists in the copyBooks(bookList) in this case for `newestBookList` book_index would be on position 1.
if (book_index >= 0) { // <-- (1 >= 0)
copyBooks.splice(book_index, 1); // <-- (1, 1) removes 'On The Electrodynamics of Moving Bodies'
return copyBooks;
}
}
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(newestBookList); // will display ["The Hound of the Baskervilles", "Philosophiæ Naturalis Principia Mathematica", "Disquisitiones Arithmeticae", "A Brief History of Time"]
Reference
この問題について(関数型プログラミング: 関数からグローバル変数をリファクタリングする), 我々は、より多くの情報をここで見つけました https://dev.to/rthefounding/refactoring-global-variables-out-of-functions-5069テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol