Rumah  >  Artikel  >  Tutorial CMS  >  JavaScript: Isih nilai organisasi

JavaScript: Isih nilai organisasi

王林
王林asal
2023-08-30 20:17:02645semak imbas

JavaScript: Isih nilai organisasi

Jika anda sudah mengetahui asas tatasusunan JavaScript, sudah tiba masanya untuk membawa kemahiran anda ke peringkat seterusnya dengan topik yang lebih lanjut. Dalam siri tutorial ini, anda akan meneroka topik pengaturcaraan peringkat pertengahan dengan tatasusunan dalam JavaScript.

Mengisih tatasusunan ialah salah satu tugas yang paling biasa apabila pengaturcaraan dalam JavaScript. Oleh itu, sebagai pengaturcara JavaScript, adalah penting untuk mempelajari cara mengisih tatasusunan dengan betul kerana anda akan melakukan ini dengan kerap dalam projek dunia sebenar. Teknik pengisihan yang salah benar-benar boleh melambatkan permohonan anda!

Pada masa lalu, pembangun web terpaksa menggunakan perpustakaan pihak ketiga seperti jQuery dan menulis banyak kod untuk mengisih nilai dalam koleksi senarai. Nasib baik, JavaScript telah berkembang dengan pesat sejak itu. Kini anda boleh mengisih tatasusunan JavaScript yang mengandungi beribu-ribu nilai dengan hanya satu baris kod, tanpa menggunakan mana-mana perpustakaan pihak ketiga.

Dalam artikel ini, saya akan menunjukkan kepada anda cara mengisih koleksi tatasusunan mudah dan kompleks dalam JavaScript. Kami akan menggunakan kaedah sort() JavaScript untuk mengisih: sort() 方法进行排序:

  • 数字数组
  • 字符串数组
  • 复杂对象数组
    • 按名称(字符串)
    • 按 ID(号码)
    • 按出生日期(日期)

在本教程结束时,您应该彻底了解 JavaScript 的 sort() 方法的工作原理以及如何使用它对数字、字符串和对象的数组进行排序。

JavaScript sort() 方法

JavaScript sort() 方法是 JavaScript 中最有用和最常用的数组方法之一。它允许您快速轻松地按升序或降序对数据元素数组进行排序。

您可以使用该方法对数字、字符串、日期甚至对象的数组进行排序。 sort() 方法的工作原理是获取元素数组并根据某些标准对它们进行排序。标准可以是函数、比较运算符或值数组。

对数字数组进行排序

使用 sort 方法对数字数组进行排序非常简单:

let numbers = [12, 88, 57, 99, 03, 01, 83, 21]
console.log(numbers.sort())

// output [1, 12, 21, 3, 57, 83, 88, 99]

在上面的代码中,sort()方法对numbers进行升序排序,这是默认的模式。

您还可以向后排序数字(即按降序排列)。为此,您需要创建以下自定义排序函数:

function desc(a, b) {
 return b - a
}

该函数接受两个参数(ab),它们代表要排序的两个值。如果返回正数,则 sort() 方法将理解 b 应在 a 之前排序。如果它返回负数,则 sort() 将理解 a 应该位于 b 之前。如果 b > a,则该函数将返回正数,这意味着如果 a 小于 b,则 b 将位于 a 之前。

console.log(numbers.sort(desc))
// output [99, 88, 83, 57, 21, 12, 3, 1]

接下来是如何对字符串数组进行排序。

在 Java 脚本中对字符串数组进行排序

对字符串值进行排序同样简单:

let names = ["Sam", "Koe", "Eke", "Victor", "Adam"]
console.log(names.sort())

// output ["Adam", "Eke", "Koe", "Sam", "Victor"]

以下是按降序对相同字符串进行排序的函数:

function descString(a, b) {
    return b.localeCompare(a);
}

如果第二个名称按字母顺序排在第一个名称之后,我们会从函数返回 1,这意味着第二个名称将在排序数组中排在第一位。否则,我们返回 -1,如果两者相等,则返回 0

现在,如果您对 names 数组运行排序方法,并以 desc 作为其参数,您会得到不同的输出:

console.log(names.sort(descString))

// ["Victor", "Sam", "Koe", "Eke", "Adam"]

在 JavaScript 中对复杂对象数组进行排序

到目前为止,我们只对字符串和数字等简单值进行排序。您还可以使用 sort() 方法对对象数组进行排序。让我们在下面的部分中看看如何操作。

按名称(字符串属性)对对象进行排序

这里我们有一个 people 数组,其中包含多个 person 对象。每个对象由 idnamedob 属性组成:

const people = [
  {id: 15, name: "Blessing", dob: '1999-04-09'},
  {id: 17, name: "Aladdin", dob: '1989-06-21'},
  {id: 54, name: "Mark", dob: '1985-01-08'},
  {id: 29, name: "John", dob: '1992-11-09'},
  {id: 15, name: "Prince", dob: '2001-09-09'}
]

要通过 name 属性对此数组进行排序,我们必须创建一个自定义排序函数并将其传递给 sort 方法:

students.sort(byName)

这个 byName

  • Susun atur nombor
  • Susun rentetan
  • Susun atur objek kompleks
    • Dengan nama (rentetan)
    • Tekan ID (nombor)
    • Mengikut tarikh lahir (tarikh)
Menjelang akhir tutorial ini, anda seharusnya mempunyai pemahaman yang menyeluruh tentang cara kaedah sort() JavaScript berfungsi dan cara menggunakannya untuk mengisih tatasusunan nombor, rentetan dan objek.

Kaedah sort() JavaScript

Kaedah sort() JavaScript ialah salah satu kaedah tatasusunan yang paling berguna dan biasa digunakan dalam JavaScript. Ia membolehkan anda mengisih susunan elemen data dengan cepat dan mudah dalam tertib menaik atau menurun. 🎜 🎜Anda boleh menggunakan kaedah ini untuk mengisih tatasusunan nombor, rentetan, tarikh dan juga objek. Kaedah sort() berfungsi dengan mengambil tatasusunan elemen dan mengisihnya berdasarkan beberapa kriteria. Kriteria boleh menjadi fungsi, pengendali perbandingan atau tatasusunan nilai. 🎜

Isih tatasusunan nombor

🎜 Mengisih tatasusunan nombor adalah sangat mudah menggunakan kaedah isih: 🎜
function byName(a, b) {
    return a.name.localeCompare(b.name);
}
🎜Dalam kod di atas, kaedah sort() mengisih nombor dalam tertib menaik, iaitu mod lalai. 🎜 🎜Anda juga boleh mengisih nombor ke belakang (iaitu dalam tertib menurun). Untuk melakukan ini, anda perlu mencipta fungsi isihan tersuai berikut: 🎜
[
  {id: 17, name: "Aladdin", dob: '1989-06-21'},
  {id: 15, name: "Blessing", dob: '1999-04-09'},
  {id: 29, name: "John", dob: '1992-11-09'},
  {id: 54, name: "Mark", dob: '1985-01-08'},
  {id: 32, name: "Prince", dob: '2001-09-09'}
]
🎜Fungsi ini menerima dua parameter (a dan b), yang mewakili dua nilai yang akan diisih. Jika nombor positif dikembalikan, kaedah sort() akan memahami bahawa b harus diisih sebelum a. Jika ia mengembalikan nombor negatif, sort() akan memahami bahawa a harus didahulukan sebelum b. Fungsi akan mengembalikan nombor positif jika b > a, yang bermaksud jika a kurang daripada b, maka b akan datang sebelum a. 🎜
function byID(a, b) {
  return parseInt(a.id) - parseInt(b.id)
}
🎜Langkah seterusnya ialah cara mengisih tatasusunan rentetan. 🎜

Isih tatasusunan rentetan dalam skrip Java

🎜 Mengisih nilai rentetan adalah semudah: 🎜
console.log(students.sort(byID))
/*
[
  {id: 15, name: "Blessing", dob: '1999-04-09'},
  {id: 17, name: "Aladdin", dob: '1989-06-21'},
  {id: 29, name: "John", dob: '1992-11-09'},
  {id: 32, name: "Prince", dob: '2001-09-09'}
  {id: 54, name: "Mark", dob: '1985-01-08'},
]
*/
🎜Berikut ialah fungsi untuk mengisih rentetan yang sama dalam tertib menurun: 🎜
function byDate(a, b) {
   return new Date(a.dob).valueOf() - new Date(b.dob).valueOf()
}
🎜Jika nama kedua datang mengikut abjad selepas nama pertama, kami mengembalikan 1 daripada fungsi, yang bermaksud nama kedua akan didahulukan dalam tatasusunan yang diisih. Jika tidak, kami mengembalikan -1, atau 0 jika sama. 🎜 🎜Sekarang, jika anda menjalankan kaedah isihan pada tatasusunan nama, dengan desc sebagai parameternya, anda mendapat output yang berbeza: 🎜
console.log(students.sort(byDate))

/*
[
  {id: 54, name: "Mark", dob: '1985-01-08'},
  {id: 17, name: "Aladdin", dob: '1989-06-21'},
  {id: 29, name: "John", dob: '1992-11-09'},
  {id: 15, name: "Blessing", dob: '1999-04-09'},
  {id: 32, name: "Prince", dob: '2001-09-09'}
]
*/

Mengisih tatasusunan objek kompleks dalam JavaScript

🎜Setakat ini kami hanya mengisih nilai mudah seperti rentetan dan nombor. Anda juga boleh mengisih tatasusunan objek menggunakan kaedah sort(). Jom lihat caranya di bahagian bawah. 🎜

Isih objek mengikut nama (atribut rentetan)

🎜Di sini kita mempunyai tatasusunan orang yang mengandungi objek berbilang orang. Setiap objek terdiri daripada atribut id, name dan dob: 🎜 rrreee 🎜Untuk mengisih tatasusunan ini melalui atribut name, kita mesti mencipta fungsi isihan tersuai dan menghantarnya kepada kaedah isih: 🎜 rrreee 🎜Fungsi isihan tersuai byName ini mengambil dua objek setiap kali dan membandingkan dua sifat nama mereka untuk melihat mana yang lebih besar (iaitu mengikut abjad didahulukan): 🎜 rrreee 🎜Sekarang jika anda menjalankan kod sekali lagi anda akan mendapat hasil berikut: 🎜
[
  {id: 17, name: "Aladdin", dob: '1989-06-21'},
  {id: 15, name: "Blessing", dob: '1999-04-09'},
  {id: 29, name: "John", dob: '1992-11-09'},
  {id: 54, name: "Mark", dob: '1985-01-08'},
  {id: 32, name: "Prince", dob: '2001-09-09'}
]

按 ID 排序(数字属性)

在前面的示例中,我们按名称(字符串)进行排序。在此示例中,我们将按每个对象的 ID 属性(数字)进行排序。

为此,我们可以使用以下函数:

function byID(a, b) {
  return parseInt(a.id) - parseInt(b.id)
}

在函数中,我们使用 parseInt() 来确保该值是一个数字,然后我们将两个数字相减以获得负值、正值或零值。使用此函数,您可以按公共数字属性对任何对象数组进行排序。

console.log(students.sort(byID))
/*
[
  {id: 15, name: "Blessing", dob: '1999-04-09'},
  {id: 17, name: "Aladdin", dob: '1989-06-21'},
  {id: 29, name: "John", dob: '1992-11-09'},
  {id: 32, name: "Prince", dob: '2001-09-09'}
  {id: 54, name: "Mark", dob: '1985-01-08'},
]
*/

按日期排序

假设您想要构建一个应用程序,允许用户从数据库下载姓名列表,但您希望根据出生日期(从最年长到最年轻)按时间顺序排列姓名.

此函数按年、月、日的时间顺序对出生日期进行排序。

function byDate(a, b) {
   return new Date(a.dob).valueOf() - new Date(b.dob).valueOf()
}

Date().valueOf() 调用返回每个日期的时间戳。然后,我们执行与前面示例中相同的减法来确定顺序。

演示:

console.log(students.sort(byDate))

/*
[
  {id: 54, name: "Mark", dob: '1985-01-08'},
  {id: 17, name: "Aladdin", dob: '1989-06-21'},
  {id: 29, name: "John", dob: '1992-11-09'},
  {id: 15, name: "Blessing", dob: '1999-04-09'},
  {id: 32, name: "Prince", dob: '2001-09-09'}
]
*/

这种特殊方法在涉及日期顺序的情况下非常方便,例如确定谁有资格获得养老金或其他与年龄相关的福利的申请。

结论

总的来说,使用各种内置方法时,在 JavaScript 中对元素进行排序非常简单。无论您需要对数字、字符串、对象还是日期数组进行排序,都有一种方法可以轻松完成这项工作。借助这些方法,您可以快速轻松地对 JavaScript 应用程序中的任何数据进行排序。

Atas ialah kandungan terperinci JavaScript: Isih nilai organisasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn