首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从数组中动态绘制单元,并将它们与预定义的数字值配对?

如何从数组中动态绘制单元,并将它们与预定义的数字值配对?
EN

Stack Overflow用户
提问于 2022-02-09 21:59:51
回答 2查看 28关注 0票数 0

所以我正在做家庭作业,通过编写一个叫做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)的结果。

我不知道如何从这里前进,我完全被困住了。

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2022-02-10 00:26:31

像这样的事怎么样:

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2022-02-10 01:20:23

split() "wwdl"字符串放入数组中:

代码语言:javascript
复制
'wwdl'.split('') //['w', 'w', 'd', 'l']

然后获取对象的每个键('w','d','l')并得到值(3,1,0)。

代码语言:javascript
复制
 object['w'] // first iteration 3
 object['w'] // second iteration 3
 object['d'] // third iterayion 1
 object['l'] // fourth iteration 0

.reduce()可以添加值并返回一个和:

代码语言:javascript
复制
  sum + current value

在下面的示例中,log(data)只是一个帮助函数,可以更容易地记录到控制台。

代码语言:javascript
复制
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));
代码语言:javascript
复制
.as-console-row::after {
  width: 0;
  font-size: 0;
}

.as-console-row-code {
  width: 100%;
  word-break: break-word;
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71057303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档