javascript - 每次输入新行js后的平均工资

标签 javascript arrays

我需要制作在每次输入新行后计算平均工资的函数。 这就是我的代码的样子

function addNew() {

  let salary = prompt("What is your salary?");
  element.innerHTML += `<li> 
    <span class = "employeeSalary"> ${salary}</span>
  </li>`
}

我必须使用纯js。这是我开始的地方,但我真的不知道如何做到这一点

function countAvgSal() {
  const num = document.getElementsByClassName("employeeSalary");
} 

countAvgSal();

function writeSal() {
    const docavg = document.getElementById('docAvgSal');
    docavg.innerHTML = `The average salary is ${countAvgSal()}`
}

最佳答案

要计算平均值,您可以使用 .reduce()方法。

但首先你需要拿到所有的工资。 .getElementsByClassName 返回 HTMLCollection 。要将其转换为数字列表,您可以使用 spread syntax :

const salaries = [...document.getElementsByClassName("employeeSalary")];

然后map将此数组转换为数字数组:

salaries.map(e => parseFloat(e.innerHTML))

最后使用.reduce()计算平均值:

.reduce((sum, cur) => sum += cur) / salaries.length;

function addNew() {
  const element = document.getElementById('salaries');
  let salary = prompt("What is your salary?");
  element.innerHTML += `<li> 
    <span class = "employeeSalary"> ${salary}</span>
  </li>`;
  writeSal();
}

function countAvgSal(){
  const salaries = [...document.getElementsByClassName("employeeSalary")];
  return !salaries.length ? 0 : salaries.map(e => parseFloat(e.innerHTML))
    .reduce((sum, cur) => sum += cur) / salaries.length;
} 

function writeSal(){
    const docavg = document.getElementById('docAvgSal');
    docavg.innerHTML = `The average salary is ${countAvgSal()}`
}
<button onclick="addNew()">Add</button>
<ul id="salaries"></ul>
<div id="docAvgSal"></div>

关于javascript - 每次输入新行js后的平均工资,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58491826/

相关文章:

javascript - 在二维数组中查找比较

mysql - 在delphi 7上用数组检索多个记录值

javascript - 将一些有用的 js 库包装到 Angular 模块的好习惯是什么?

javascript - 变量定义中的多个相等

javascript - 让用户通过 javascript 访问 cookie 是一个安全问题吗

arrays - 不可复制类型的数组初始化

javascript - 通过字符串访问 JavaScript 中的事件数据以指定要捕获的输入表单

javascript - 在模态中选择 2 个功能问题

javascript - 在移动设备上自动折叠 OpenUI5 侧边导航

c++ - 在C++中向数组添加索引和指定数字