首页 > 解决方案 > 根据值在输出之前对 JSON 成员进行排序和 for 循环

问题描述

我现在学习 JavaScript 1 个月了,我正在创建一个用于学习目的的网页,但我坚持打印基于前 10% 和后 10% 的数据。我已经在 Repl.it 上上传了所有内容,这是链接:https ://repl.it/@YevgeniyMakkoye/Task2-RE

我正在谈论的页面位于 assets/js/getAttendance.js

我正在使用的代码是:

  var filteredMembers = [];
  actove = true;
  while (filteredMembers.length / jlen < 0.1 ||
  !filteredMembers.length) {
    for(let member of members){
      filteredMembers.push(member);
    }
    for (let i = 0; i < arrMemberVotes.length; i++) {
      if (arrMemberVotes[i] === arrMemberVotes) {
        arrMemberVotes.splice(i, 1);
      }
    }
    console.log(maxMinCalc(arrMissedVotes, false));
    console.log(filteredMembers);
  }

但是在这段代码下,你会发现我正在尝试的其他逻辑。如何返回带有 % Missed 的表格?

这是 fetchData.js,其中dataSenate/dataHouseJavaScript 对象直接链接到 JSON。

function getSenate() {
  json = dataSenate,
    json = json.results[0],
    jlen = json.num_results,
    members = json.members;
}

function getHouse() {
  json = dataHouse,
    json = json.results[0],
    jlen = json.num_results,
    members = json.members;
}

//GET ALL DATA:
function getData(counter) {
  memberParty = members[counter].party;
  memberState = members[counter].state;
  memberSeniority = members[counter].seniority;
  firstName = members[counter].first_name;
  middleName = members[counter].middle_name;
  lastName = members[counter].last_name;
  memberVotes = members[counter].votes_with_party_pct;
  missedVotes = members[counter].missed_votes;
  missedVotesPerc = members[counter].missed_votes_pct;
  spacer = " ";
  fullName = firstName.concat(spacer, middleName, spacer, lastName);
  if (fullName.includes("null") == true) {
    fullName = firstName.concat(spacer, lastName)

  } else {
    fullName = firstName.concat(spacer, middleName, spacer, lastName)
  }
}

标签: javascriptarraysjsonsortingfor-loop

解决方案


我找到了解决方案。这是我用来根据特定值对对象进行排序的代码:

var filtredDataDesc = Object.values(json.members);
  filtredDataDesc.sort((a, b) => (b.votes_with_party_pct > a.votes_with_party_pct) ? 1 : -1);
  var filtredDataAsc = Object.values(json.members);
  filtredDataAsc.sort((a, b) => (a.votes_with_party_pct > b.votes_with_party_pct) ? 1 : -1);
  var desFullName = [];
  var ascFullName = [];


  for (var i = 0; i <= 10; i++) {

    fullNameDesc = filtredDataDesc[i].first_name + " " + filtredDataDesc[i].middle_name + " " + filtredDataDesc[i].last_name;

    if(fullNameDesc.includes("null") == true){
      fullNameDesc = filtredDataDesc[i].first_name + " " + filtredDataDesc[i].last_name;
    } else {
      fullNameDesc = filtredDataDesc[i].first_name + " " + filtredDataDesc[i].middle_name + " " + filtredDataDesc[i].last_name;
    }

    fullNameAsc = filtredDataAsc[i].first_name + " " + filtredDataAsc[i].middle_name + " " + filtredDataAsc[i].last_name;
    if(fullNameAsc.includes("null") == true){
      fullNameAsc = filtredDataAsc[i].first_name + " " + filtredDataAsc[i].last_name;
    } else {
      fullNameAsc = filtredDataAsc[i].first_name + " " + filtredDataAsc[i].middle_name + " " + filtredDataAsc[i].last_name;
    }
    globalVariables();

    topTarget.innerHTML += oTr + oTd + fullNameDesc + cTd + oTd + filtredDataDesc[i].missed_votes + cTd + oTd + filtredDataDesc[i].votes_with_party_pct + cTd + cTr;
    bottomTarget.innerHTML += oTr + oTd + fullNameAsc + cTd + oTd + filtredDataAsc[i].missed_votes + cTd + oTd + filtredDataAsc[i].votes_with_party_pct + cTd + cTr;

推荐阅读