按年龄对数组排序

时间:2018-09-19 13:48:24

标签: javascript arrays function sorting

我的功能是按年龄对数组进行排序,但是由于某种原因它不起作用?

其他代码,因此您知道即时消息正在调用什么,数组名称等。

var employeeA = new Array();
var employee = new Object();
var employeeList = [];
var employeeListA = [];
var name;
var age;
var position;
var type = 3;
var canvas;
var ctx;

function setupCanvas() {
    //alert("1");
    canvas = document.getElementById("employeeRecords");
    if (canvas.getContext) {
        ctx = canvas.getContext('2d');
        ctx.fillStyle = "lightblue";
        ctx.rect(0, 0, 500, 500);
        ctx.fill();
    }

此处显示“排序年龄”代码:

function sortAge() {
    type = 1;
    employeeList.forEach(function(empl) {
        name = empl.name;
        age = empl.age;
        position = empl.position;
        employeeA = new Array(age, name, position);
        employeeListA.push(employeeA);
    });
    var y = employeeListA.length;
    if (y > 1) {
        employeeListA.sort();
    }
}

正在为排序按钮调用此代码

function arrayButtons() {
    employeeListA = [];
    if (type === 0) {
        sortName();
    } else {

        if (type === 1) {
            sortAge();
        } else {
            employeeList.forEach(function(empl) {
                name = empl.name;
                age = empl.age;
                position = empl.position;
                employeeA = new Array(name, age, position);
                employeeListA.push(employeeA);

            });

感谢您的帮助!欣赏它 :D

2 个答案:

答案 0 :(得分:0)

您正在寻找的是: Sort array of objects by string property value in JavaScript

TLDR: 您可以使用数组的方法.sort,该方法可以将比较器函数用作第一个参数。此函数接受2个参数,它们将成为for循环中的每个对象。

var employees = [
  {
    age: 28
  },
  {
    age: 18
  },
  {
    age: 35
  }
];
employees.sort(
    function(a, b) {
       return a.age - b.age
    }
);
console.log(employees)

希望这对您有所帮助。

答案 1 :(得分:0)

使用 sort() 方法是在一行代码中获得预期结果的非常简单的方法。

more info

const myTeam = [
  {
    name: "Virat",
    age: 40
  },
    {
    name: "Rohit",
    age: 30
  },
    {
    name: "Bhuvi",
    age: 20
  },
    {
    name: "Raina",
    age: 33
  }
]

const sortedByAge = myTeam.sort((firstEl,secondEl)=> secondEl.age - secondEl.age);

  console.log(sortedByAge);