天天看點

JS小技巧,如何使用内置函數對數組内容進行排序 (二)

大家好,關于數組内容排序的需求也十分常見,我們在業務中會經常使用,本篇文章就總結一些常見的數組排序的方法,一起做個歸納總結。

一、字元串數組排序

1、sort(): 對數組進行排序,預設按字典序排序。

let fruits = ["banana", "apple", "orange"];
fruits.sort();
console.log(fruits); // ["apple", "banana", "orange"]           

2、reverse(): 将數組中元素反轉。

let fruits = ["banana", "apple", "orange"];
fruits.reverse();
console.log(fruits); // ["orange", "apple", "banana"]           

二、數字數組排序

1、sort() 傳遞比較函數

let numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers); // [1, 2, 3, 4, 5]           

2、使用箭頭函數的sort

let numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 2, 3, 4, 5]           

3、使用 Array.from 結合 sort 排序

let numbers = [4, 2, 5, 1, 3];
let sortedNumbers = Array.from(numbers).sort((a, b) => a - b);
console.log(sortedNumbers); // [1, 2, 3, 4, 5]           

4、使用 spread operator 和 sort

let numbers = [4, 2, 5, 1, 3];
let sortedNumbers = [...numbers].sort((a, b) => a - b);
console.log(sortedNumbers); // [1, 2, 3, 4, 5]           

5、使用lodash庫中的sortBy函數

let _ = require('lodash');
let numbers = [4, 2, 5, 1, 3];
let sortedNumbers = _.sortBy(numbers);
console.log(sortedNumbers); // [1, 2, 3, 4, 5]           

這些函數提供了不同的方法來排序數組,您可以根據需要使用它們。

三、對象數組排序

如果是對象數組,我們可以使用 JavaScript 中内置的 sort() 方法并傳入一個比較函數來實作按照某個對象的屬性進行排序。

1、例如,如果要按照對象的屬性 "age" 從小到大排序,可以使用如下代碼:

let people = [
    { name: "John", age: 25 },
    { name: "Jane", age: 32 },
    { name: "Bob", age: 21 }
];

people.sort(function(a, b) {
    return a.age - b.age;
});
console.log(people);
/*
  [
    { name: 'Bob', age: 21 },
    { name: 'John', age: 25 },
    { name: 'Jane', age: 32 }
  ]
*/           

也可以使用箭頭函數

let people = [
    { name: "John", age: 25 },
    { name: "Jane", age: 32 },
    { name: "Bob", age: 21 }
];

people.sort((a, b) => a.age - b.age);
console.log(people);
/*
  [
    { name: 'Bob', age: 21 },
    { name: 'John', age: 25 },
    { name: 'Jane', age: 32 }
  ]
*/           

2、如果要按照對象的屬性 "name" 從 A 到 Z 排序,可以使用如下代碼:

let people = [
    { name: "John", age: 25 },
    { name: "Jane", age: 32 },
    { name: "Bob", age: 21 }
];

people.sort(function(a, b) {
    let nameA = a.name.toUpperCase();
    let nameB = b.name.toUpperCase();
    if (nameA < nameB) {
        return -1;
    }
    if (nameA > nameB) {
        return 1;
    }
    return 0;
});
console.log(people);
/*
  [
    { name: 'Bob', age: 21 },
    { name: 'Jane', age: 32 },
    { name: 'John', age: 25 }
  ]
*/           

3、使用 lodash 庫中的 sortBy()

let _ = require('lodash');
let people = [
    { name: "John", age: 25 },
    { name: "Jane", age: 32 },
    { name: "Bob", age: 21 }
];

let sortedPeople = _.sortBy(people, 'age').reverse();
console.log(sortedPeople);
/*
  [
    { name: 'Jane', age: 32 },
    { name: 'John', age: 25 },
    { name: 'Bob', age: 21 }
  ]
*/           

4、underscore 庫中的 sortBy()

let _ = require('underscore');
let people = [
    { name: "John", age: 25 },
    { name: "Jane", age: 32 },
    { name: "Bob", age: 21 }
];

let sortedPeople = _.sortBy(people, function(person) { return person.name; });
console.log(sortedPeople);
/*
  [
    { name: 'Bob', age: 21 },
    { name: 'Jane', age: 32 },
    { name: 'John', age: 25 }
  ]
*/           

這些第三方庫提供了更多的排序選項和方法,可以滿足更多的需求。

總之,在 JavaScript 中,排序對象數組可以使用 sort() 方法并傳入一個比較函數,或者使用第三方庫中的函數。

總結

今天的分享就到這裡,如果你有其他的内置排序函數或第三方庫,歡迎你在評論區補充,感謝你的閱讀,我們下期再見。

繼續閱讀