javascript - 如何使用不同的对象数组对对象数组进行排序?

标签 javascript es6-class

<分区>

我在尝试让一组对象以不同顺序显示时遇到问题。我们应该让输出显示的姓名按索引、名字、姓氏和年龄排序。当我运行代码时,我只让名称显示一次。附上了一张desire输出的图,有点懵,卡住了。这是我到目前为止所拥有的:

class Names {

  constructor(first, last, age) {
    this.first = first;
    this.last = last;
    this.age = age;
  }
}

function printObject(allNames, sortType, message) {
  if (sortType == "first") {
    allNames.sort(function(a, b) {
      return a.first.localeCompare(b.first);
    });
  }

  if (sortType == "last") {
    allNames.sort(function(a, b) {
      return a.last.localeCompare(b.last);
    });
  }

  if (sortType == "age") {
    allNames.sort(function(a, b) {
      return a.age - b.age;
    });
  }

  for (let i = 0; i < allNames.length; i++) {
    console.log(message);
    console.log(allNames[i].first + " " + allNames[i].last + " " + allNames[i].age);
  }
}

// main fucntion 
function main() {
    var allNames = [];

    allNames.push(new Names("John", "Doe", 40));
    allNames.push(new Names("Jay", "Thrift", 30));
    allNames.push(new Names("Card", "Ace", 20));

    printObject(allNames, "age", "Message");
}

main();

desire output

最佳答案

您是否只是缺少这些行来获得所有不同的排序?

printObject(allNames, "first", "By first name");
printObject(allNames, "last", "By last name");
printObject(allNames, null, "By index");

跟随 printObject(allNames, "age", "Message");?

(我将其更改为 printObject(allNames, "age", "By age");)

关于javascript - 如何使用不同的对象数组对对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58148997/

相关文章:

reactjs - easy-peasy:useStoreState 不适用于 ES6 类实例

javascript - 使用 extends 子类化 Promise 内置

javascript - 使用 onclick 函数隐藏父元素

javascript - 即使 dx 和 dy 为 0,d3 拖动也会触发事件

javascript - 无法点击谷歌图表 API 中的标签

javascript - Ajax 调用没有错误但不起作用

mysql - Node.js ES6 类私有(private)存储

javascript - ES6 - 使用基类的参数调用回调

带有 ES6 类的 JavaScript 模态

javascript - 如何将 HTML 字符串拆分为单词和标签数组