Skip to content

Instantly share code, notes, and snippets.

@haru01
haru01 / 9.js
Last active August 1, 2019 07:22
function generateReadReport(readList, recommendList) {
return renderPlainText(readList, recommendList);
}
function renderPlainText(readList, recommendList) {
let report = `name: ${readList.name}\n`;
report += '-----\n';
for (let readBook of readList.books) {
if (readBook.times >= 1) {
report += ` - ${readBook.name}: ${point(readBook)} point\n`;
@@ -12,9 +12,6 @@ function generateReadedReport(readedList, recommendList) {
function total() {
- let totalPoint = 0;
- for (let readedBook of readedList.books) {
- totalPoint += point(readedBook);
- }
- return totalPoint;
+ return readedList.books
+ .reduce((total, book) => total + point(book), 0);
const generateReadedReport = require('./generateReadedReport');
test('読書レポーター', () => {
const recommendList = [
{asin: '0321146530' }, // Test Driven Development
{asin: '0596802293' }, // The Art of Readable Code
{asin: 'B005OYHF0A' }, // Working Effectively with Legacy Code
{asin: 'B075LRM681' }, // Clean Architecture
{asin: 'B07B9F83WM' }, // Accelerate
{asin: 'B07LCM8RG2' }, // Refactoring
function generateReadedReport(readedList, recommendList) {
let report = `name: ${readedList.name}\n`;
report += '-----\n';
for (let readedBook of readedList.books) {
if (readedBook.times >= 1) {
report += ` - ${readedBook.name}: ${point(readedBook)} point\n`;
}
}
report += '-----\n';
report += `total: ${total()} point`;
function generateReadedReport(readedList, recommendList) {
let totalPoint = 0;
let report = `name: ${readedList.name}\n`;
report += '-----\n';
for (let readedBook of readedList.books) {
let currentPoint = 0;
if (readedBook.times === 0) {
currentPoint = 0;
} else if (!recommendList.map(recommend => recommend.asin).includes(readedBook.asin)) {
@@ -3,5 +3,2 @@ function generateReadedReport(readedList, recommendList) {
report += '-----\n';
-
- let totalPoint = total();
-
for (let readedBook of readedList.books) {
@@ -11,5 +8,4 @@ function generateReadedReport(readedList, recommendList) {
}
-
report += '-----\n';
@@ -3,8 +3,5 @@ function generateReadedReport(readedList, recommendList) {
report += '-----\n';
- let totalPoint = 0;
- for (let readedBook of readedList.books) {
- totalPoint += point(readedBook);
- }
+ let totalPoint = total();
for (let readedBook of readedList.books) {
@@ -1,8 +1,8 @@
function generateReadedReport(readedList, recommendList) {
- let totalPoint = 0;
let report = `name: ${readedList.name}\n`;
report += '-----\n';
+ let totalPoint = 0;
for (let readedBook of readedList.books) {
totalPoint += point(readedBook);
}
@@ -4,10 +4,12 @@ function generateReadedReport(readedList, recommendList) {
report += '-----\n';
+ for (let readedBook of readedList.books) {
+ totalPoint += point(readedBook);
+ }
+
for (let readedBook of readedList.books) {
if (readedBook.times >= 1) {
report += ` - ${readedBook.name}: ${point(readedBook)} point\n`;
@@ -7,2 +6,0 @@ function generateReadedReport(readedList, recommendList) {
- let currentPoint = point(readedBook);
-
@@ -10 +8 @@ function generateReadedReport(readedList, recommendList) {
- report += ` - ${readedBook.name}: ${currentPoint} point\n`;
+ report += ` - ${readedBook.name}: ${point(readedBook)} point\n`;
@@ -13 +11 @@ function generateReadedReport(readedList, recommendList) {
- totalPoint += currentPoint;
+ totalPoint += point(readedBook);