Вернуть весь объект, основанный только на одном свойстве в JavaScript? - PullRequest
0 голосов
/ 18 марта 2020

Я пишу программу, которая планирует назначения с указанием количества часов (квоты), которые должны быть выполнены к установленному сроку (dueDate). Он основан на массиве объектов присваивания.

var assignments = [m1 = {
    moduleCode: "346",
    moduleName: "Computer Science",
    quota: 100,
    dueDate: "2019-12-12"
  }, m2 = {
    moduleCode: "360",
    moduleName: "Maths",
    quota: 200,
    dueDate: "2020-05-01"
  }];

Я пишу функцию для извлечения объекта на основе определенных параметров, например объекта с наибольшим количеством часов, но я хочу вернуть объект в целом, а не просто собственность.

function getHighestWorkload(assignments) {
  let highestQuota = 0;
  for(var i=0; i<assignments.length; i++) {
    if(assignments[i].quota > highestQuota) {
      highestQuota = assignments[i].quota;
    }
  }
  // Get the entire assignment object based on its quota 
}

Есть ли способ вернуть весь объект на основе его параметра? Спасибо.

Ответы [ 4 ]

1 голос
/ 18 марта 2020

Вы можете сделать это, отсортировав массив desc по порядку, а затем получить первое значение индекса.

var assignments = [
  {
    moduleCode: "346",
    moduleName: "Computer Science",
    quota: 100,
    dueDate: "2019-12-12"
  },
  {
    moduleCode: "360",
    moduleName: "Maths",
    quota: 200,
    dueDate: "2020-05-01"
  }
];

assignments.sort((a,b) => b.quota - a.quota);

console.log(assignments[0]);
0 голосов
/ 18 марта 2020

var assignments = [m1 = {
    moduleCode: "346",
    moduleName: "Computer Science",
    quota: 100,
    dueDate: "2019-12-12"
  }, m2 = {
    moduleCode: "360",
    moduleName: "Maths",
    quota: 200,
    dueDate: "2020-05-01"
  }];
  
  let highestQuotaObj=assignments[0]
  assignments.forEach(obj=>{
  highestQuotaObj=highestQuotaObj.quota>obj.quota?highestQuotaObj:obj;
  })
  console.log(highestQuotaObj)
0 голосов
/ 18 марта 2020

var assignments = [m1 = {
    moduleCode: "346",
    moduleName: "Computer Science",
    quota: 100,
    dueDate: "2019-12-12"
  }, m2 = {
    moduleCode: "360",
    moduleName: "Maths",
    quota: 200,
    dueDate: "2020-05-01"
  }];


function getHighestWorkload(assignments) {
  let highestQuota = 0;
  for(var i=0; i<assignments.length; i++) {  
    if(assignments[i].quota > highestQuota) {
      highestQuota = assignments[i].quota;
      var myObject = assignments[i]
    }
  }
  return myObject;
 }

console.log(getHighestWorkload(assignments));
0 голосов
/ 18 марта 2020

Вы просто присваиваете значение свойства объекта highestQuota с помощью highestQuota = assignments[i].quota;. Если вы хотите, чтобы highestQuota был назначен объект, его сначала нужно инициализировать как объект, а затем добавить весь объект назначений, а не только его значение.

let highestQuota = {} 
highestQuota = assignments[i]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...