Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Isih Sifat Objek JavaScript mengikut Nilainya?

Bagaimanakah Saya Boleh Isih Sifat Objek JavaScript mengikut Nilainya?

Susan Sarandon
Susan Sarandonasal
2024-12-25 16:09:24373semak imbas

How Can I Sort JavaScript Object Properties by Their Values?

Mengisih Sifat Objek mengikut Nilai

Mengisih sifat objek berdasarkan nilainya dalam JavaScript boleh dicapai melalui penyelesaian yang bijak. Daripada bergantung pada susunan sifat objek yang bergantung kepada pelaksanaan, kita boleh menukarnya kepada tatasusunan, mengisih tatasusunan dan mencipta semula objek.

Untuk mencapai ini, kami memindahkan sifat objek ke dalam tatasusunan menggunakan gelung:

let sortable = [];
for (var vehicle in maxSpeed) {
    sortable.push([vehicle, maxSpeed[vehicle]]);
}

Setelah dalam bentuk tatasusunan, kita boleh menggunakan fungsi isihan untuk mengisih unsur mengikut value:

sortable.sort(function(a, b) {
    return a[1] - b[1];
});

Ini menghasilkan tatasusunan dalam tertib diisih:

// [["bike", 60], ["motorbike", 200], ["car", 300],
// ["helicopter", 400], ["airplane", 1000], ["rocket", 28800]]

Daripada tatasusunan yang diisih, kita boleh membina semula objek sambil mengekalkan susunan yang dikehendaki:

let objSorted = {}
sortable.forEach(function(item){
    objSorted[item[0]]=item[1]
})

Sebagai alternatif, jika ES8 tersedia, kita boleh menggunakan Object.entry dan mengurangkan kaedah untuk mengubah objek menjadi tatasusunan:

const sortable = Object.entries(maxSpeed)
    .sort(([,a],[,b]) => a-b)
    .reduce((r, [k, v]) => ({ ...r, [k]: v }), {});

Pendekatan ini kekal sebagai penyelesaian kerana keanehan pelaksanaan dan seseorang harus mengelak daripada bergantung pada susunan sifat objek dalam JavaScript.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Sifat Objek JavaScript mengikut Nilainya?. 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