Katakanlah, saya memiliki array yang terlihat seperti ini:
var playlist = [
{artist:"Herbie Hancock", title:"Thrust"},
{artist:"Lalo Schifrin", title:"Shifting Gears"},
{artist:"Faze-O", title:"Riding High"}
];
Bagaimana cara memindahkan elemen ke posisi lain?
Saya ingin pindah misalnya, {artist:"Lalo Schifrin", title:"Shifting Gears"}
sampai akhir.
Saya mencoba menggunakan sambungan, seperti ini:
var tmp = playlist.splice(2,1);
playlist.splice(2,0,tmp);
Tapi itu tidak berhasil.
javascript
arrays
sorting
Wurlitzer
sumber
sumber
Jawaban:
Sintaksnya
Array.splice
adalah:Dimana:
Artinya,
splice()
dapat digunakan untuk menghapus elemen, menambahkan elemen, atau mengganti elemen dalam array, bergantung pada argumen yang Anda berikan.Perhatikan bahwa ini mengembalikan larik elemen yang dihapus.
Sesuatu yang bagus dan umum adalah:
Kemudian gunakan saja:
Diagram:
sumber
Jika Anda mengetahui indeksnya, Anda dapat dengan mudah menukar elemen, dengan fungsi sederhana seperti ini:
Indeks array hanyalah properti dari objek array, jadi Anda dapat menukar nilainya.
sumber
Ini adalah versi yang tidak dapat diubah untuk mereka yang tertarik:
sumber
Ubah 2 menjadi 1 sebagai parameter pertama dalam panggilan sambatan saat menghapus elemen:
sumber
Dengan ES6 Anda dapat melakukan sesuatu seperti ini:
sumber
Anda selalu dapat menggunakan metode sortir, jika Anda tidak tahu di mana record saat ini:
sumber
return +(a.artist == "Lalo Schifrin")
EDIT: Silakan lihat jawaban Andy karena jawabannya datang lebih dulu dan ini semata-mata perpanjangan dari miliknya
Saya tahu ini adalah pertanyaan lama, tapi menurut saya itu layak untuk dimasukkan
Array.prototype.sort()
.Berikut contoh dari MDN bersama dengan tautannya
Untungnya, ini tidak hanya berfungsi dengan angka:
Saya perhatikan bahwa Anda memesannya dengan nama depan:
perhatikan bahwa jika Anda ingin memesannya dengan nama belakang Anda harus memiliki kunci untuk keduanya
first_name
&last_name
atau melakukan sihir regex, yang saya tidak dapat melakukan XDSemoga membantu :)
sumber
Coba ini:
sumber
Jika Anda hanya ingin memindahkan satu item dari posisi arbitrer ke akhir larik, ini seharusnya berfungsi:
Jika Anda ingin memindahkan beberapa item dari beberapa posisi arbitrer ke akhir, Anda dapat melakukan:
Jika Anda ingin memindahkan beberapa item dari beberapa posisi arbitrer ke beberapa posisi arbitrer, coba:
sumber
Sebagai solusi sederhana yang dapat diubah, Anda dapat memanggil sambungan dua kali berturut-turut:
Di sisi lain, solusi sederhana yang tidak dapat diubah dapat menggunakan slice karena metode ini mengembalikan salinan bagian dari larik asli tanpa mengubahnya:
sumber
Susun ulang pekerjaannya dengan Cara Ini
Saya harap ini akan berhasil
sumber