用2属性过滤JavaScript中的数组

时间:2018-09-24 14:57:22

标签: javascript arrays angularjs angular

这是数组:

enter image description here

如果某人的结果+ GMath大于其他人,我想将他放在数组的第一位。

我正在制作一个有角度的应用程序。我需要为应用过滤它。如果您需要模板或ts文件,请在下面注释。

2 个答案:

答案 0 :(得分:2)

您需要做的是使用sorta的总和中减去b的总和,像这样:

let arr = [
  {result: 5, GMath: 5},
  {result: 2, GMath: 8},
  {result: 4, GMath: 10},
  {result: 1, GMath: 1}
]

arr.sort((a, b) => (b.result + b.GMath) - (a.result + a.GMath))

console.log(arr)

答案 1 :(得分:1)

// const obj = { admissionStudents: {...} }; // assuming this is the object to begin with
let keys = Object.keys(obj.admissionStudents);
keys.sort((a, b) => {
  return (obj.admissionStudents[b].result + obj.admissionStudents[b].GMath) - (obj.admissionStudents[a].result + obj.admissionStudents[a].GMath);
});

现在keys将被排序,因此使用该对象构图。

新列表,

newList = [];
keys.forEach((key) => {
  newList.push(obj.admissionStudents[key]);
});

newList将成为排序列表。

希望有帮助。