所以我正在做家庭作业,通过编写一个叫做getTotalPoints的函数来跟踪“一支运动队在一个赛季中赚了多少分”,这个函数接受一串字母并返回所获得的总分。这些字母将是"w“(wins) "d”(抽签)和/或“l”(损失)的任何系列。
赋值包括对每个字母(w = 3、d= 1和l =0)的一个预定义的数字值,一个用于绘制这些值的辅助函数( getPointsFromResult ),以及传递了一个字符串参数的函数,用来测试我编写的getTotalPoints函数的getTotalPoints('wwdl')工作正常。
我甚至把字符串转换成数组,然后尝试在这个数组上迭代。正确的答案应该是7,但我得到的结果是16,因为forEach循环似乎正在迭代所有x的4 (4是数组的长度),这是4组3+1+0 (本质上是4x4)的结果。
我不知道如何从这里前进,我完全被困住了。
const RESULT_VALUES = {
w: 3,
d: 1,
l: 0
}
/**
* Takes a single result string and (one of 'w', 'l', or 'd')
* and returns the point value
*
* @param {string} result
* @returns {number} point value
*/
function getPointsFromResult(result) {
return RESULT_VALUES[result];
}
// Create getTotalPoints function which accepts a string of results
// including wins, draws, and losses i.e. 'wwdlw'
// Returns total number of points won
let getTotalPoints = function(pointsString) {
let pointsArray = Array.from(pointsString);
console.log(pointsArray);
let sum = 0
pointsArray.forEach(function(result) {
console.log(result)
let wins = getPointsFromResult('w');
let draws = getPointsFromResult('d');
let losses = getPointsFromResult('l');
console.log(wins);
console.log(draws);
console.log(losses);
sum += wins;
sum += draws;
sum += losses;
})
return sum;
};
// Check getTotalPoints
console.log(getTotalPoints('wwdl')); // should equal 7
发布于 2022-02-10 00:26:31
像这样的事怎么样:
const RESULT_VALUES = {
w: 3,
d: 1,
l: 0
}
function getPointsFromResult(result) {
return RESULT_VALUES[result];
}
let getTotalPoints = function(pointsString) {
let pointsArray = Array.from(pointsString);
// Put value of each letter into a results array:
let results = pointsArray.map(result => getPointsFromResult(result));
// Sum all values in above results array to get total.
let sum = results.reduce((a, b) => a + b, 0);
return sum;
};
console.log(getTotalPoints('wwdl')); // should equal 7
发布于 2022-02-10 01:20:23
将split() "wwdl"字符串放入数组中:
'wwdl'.split('') //['w', 'w', 'd', 'l']然后获取对象的每个键('w','d','l')并得到值(3,1,0)。
object['w'] // first iteration 3
object['w'] // second iteration 3
object['d'] // third iterayion 1
object['l'] // fourth iteration 0.reduce()可以添加值并返回一个和:
sum + current value在下面的示例中,log(data)只是一个帮助函数,可以更容易地记录到控制台。
const log = data => console.log(JSON.stringify(data));
const record = `wwdl`;
const totalScore = record => {
const scoring = {
w: 3,
d: 1,
l: 0
};
let recArr = record.split('');
log('String as an Array:');
log(recArr);
return recArr.reduce((sum, cur) => {
log('Current Key: ' + cur + ': return: ' + scoring[cur]);
return sum + scoring[cur];
}, 0);
};
log('Total Score: ' + totalScore(record));.as-console-row::after {
width: 0;
font-size: 0;
}
.as-console-row-code {
width: 100%;
word-break: break-word;
}
https://stackoverflow.com/questions/71057303
复制相似问题