亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將值數組映射到百分比

將值數組映射到百分比

ABOUTYOU 2023-07-20 15:02:15
為什么地圖不能在這些數組上工作?我怎樣才能把這個數組變成百分比?我正在嘗試映射并解析從 API 返回的多個數組,但它僅映射每個數組中的第一個字符串,然后將其余部分返回為 NaN。我懷疑 forloop 可能會擾亂地圖的功能,但我不知道如何解決這個問題。另外,當我檢查數組上的數據類型時,它會作為對象返回。我的目標是從給定的 8 個數字中求出平均值(以百分比表示)。const apiInfo = $(".info");function init() {  $.ajax({    url: "https://api.hatchways.io/assessment/students",    method: "GET",  }).then(function (res) {    for (let i = 0; i < res.students.length; i++) {      var curr = res.students[i];      if (curr.id.includes("")) {        $(".info");        let img = $(          "<img class='pPic float-left m-3' src='" +            res.students[i].pic +            "'alt = 'profile pic'>"        );        let title = res.students[i].firstName + " " + res.students[i].lastName;        let email = res.students[i].email;        let company = res.students[i].company;        let skill = res.students[i].skill;        let sGrades = res.students[i].grades        console.log(typeof(sGrades))        let x = sGrades.map(parseInt)        let average = ""        console.log(sGrades, x);        let list = $("<div class='infoB'>");        list.append(img);        list.append("<h4 class='title'>" + title + "<h4>");        list.append("<p class='mb-1 stats'> email: " + email + "</p>");        list.append("<p class='mb-1 stats'> comapny: " + company + "</p>");        list.append("<p class='mb-1 stats'> skill: " + skill + "</p>");        list.append("<p class='mb-1 stats'> average: " + average + "</p>");        $(".info").append(list);      }    }  });}init();
查看完整描述

2 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

您可以通過以下方式對值進行平均:

const?avg?=?(arr)?=>?arr.reduce((acc,?val)?=>?acc?+?val,?0)?/?arr.length;

您可以通過以下方式調用上面的函數:

avg(student.grades.map(grade?=>?parseInt(grade,?10)));

我還建議使用模板文字來構建輸出 HTML。

演示

const apiInfo = $('.info');

const avg = (arr) => arr.reduce((acc, val) => acc + val, 0) / arr.length;


const renderStudentInfo = (student, $target) => {

? const fullName = student.firstName + ' ' + student.lastName,

? ? average = avg(student.grades.map(grade => parseInt(grade, 10)));

? $target.append($(`

? ? <div class="infoB">

? ? ? <img class="pPic float-left m-3"

? ? ? ? src="${student.pic}" alt="profile pic" />

? ? ? <h4 class="title">${fullName}</h4>

? ? ? <p class="mb-1 stats">Email: ${student.email}</p>

? ? ? <p class="mb-1 stats">Company: ${student.company}</p>

? ? ? <p class="mb-1 stats">Skill: ${student.skill}</p>

? ? ? <p class="mb-1 stats">Average: ${average.toFixed(2)}%</p>

? ? </div>

? `));

};


const init = () => {

? $.ajax({

? ? url: 'https://api.hatchways.io/assessment/students',

? ? method: 'GET',

? }).then(({ students }) => {

? ? students.forEach((student) => {

? ? ? if (student.id.includes('')) {

? ? ? ? renderStudentInfo(student, apiInfo);

? ? ? }

? ? });

? });

}


init();

.infoB {

? margin-bottom: 1em;

}


.infoB .title {

? font-weight: bold;

}


.infoB .mb-1.stats {

? color: #444;

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

<link rel="stylesheet" />

<link rel="stylesheet" />

<div class="container">

? <div class="info card scroll shadow p-3 mb-5 bg-white rounded"></div>

</div>


查看完整回答
反對 回復 2023-07-20
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

您沒有為地圖提供正確的回調函數。嘗試將該行更改為此

let x = sGrades.map((v) => `${parseInt(v)}%`)

但這將返回一個字符串數組。


查看完整回答
反對 回復 2023-07-20
  • 2 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號