Javascript - elemen - menghapus elemen tertentu dari array js. Javascript - spesifik - Bagaimana cara menghapus elemen dari array berdasarkan nilai? Js menghapus objek dari array



Bagaimana saya bisa menghapus elemen tertentu dari array di JavaScript? (dua puluh)

Saya memiliki array bilangan bulat dan saya menggunakan metode .push() untuk menambahkan item ke dalamnya.

Apakah ada cara mudah untuk menghapus elemen tertentu dari array? Setara dengan sesuatu seperti array.remove (int); ,

Saya harus menggunakan basis JavaScript - tidak ada tidak ada bingkai yang diizinkan.

ES6 dan Tanpa Mutasi: (Okt 2016)

const removeByIndex = (daftar, indeks) => [... list.slice (0, indeks), ... list.slice (indeks + 1)];

HapusByIndex (, 1) // =>

Diedit Oktober 2016

  • Buatlah sederhana, intuitif dan eksplisit (https://en.wikipedia.org/wiki/Occam%27s_razor)
  • Buat itu tidak berubah (array asli akan tetap tidak berubah)
  • Lakukan dengan fungsi JS standar jika browser Anda tidak mendukungnya - gunakan polyfill

Dalam kode contoh ini, saya menggunakan fungsi array.filter (...) " untuk menghapus elemen yang tidak perlu dari array, fungsi ini tidak mengubah array asli dan membuat yang baru. Jika browser Anda tidak mendukung fitur ini (mis. IE sebelum versi 9 atau Firefox sebelum versi 1.5), pertimbangkan untuk menggunakan filter polyfill dari Mozilla .

Menghapus elemen (kode ECMA-262 Edition 5 alias JS gaya lama)

var value = 3 var arr = arr = arr.filter (function (item) (return item! == value)) console.log (arr) // [1, 2, 4, 5]

Hapus item (kode ES2015)

let value = 3 let arr = arr = arr.filter (item => item! == value) console.log (arr) // [1, 2, 4, 5]

PENTING ES2015 "() => ()" sintaks fungsi panah tidak didukung di IE sama sekali, Chrome hingga versi 45, Firefox hingga versi 22, Safari hingga versi 10. Untuk menggunakan sintaks ES2015 di browser lama, Anda dapat menggunakan BabelJS

Menghapus beberapa item (kode ES2016)

Manfaat tambahan dari metode ini adalah Anda dapat menghapus banyak item

Let forDeletion = let arr = arr = arr.filter (item =>! ForDeletion.includes (item)) // !!! Baca di bawah tentang dukungan array.includes (...) !!! console.log (arr) // [1, 4]

PENTING"array.includes (...)" sama sekali tidak didukung di IE, Chrome sebelum versi 47, Firefox sebelum versi 43, Safari sebelum versi 9 dan Edge sebelum versi 14, jadi

Menghapus beberapa elemen (JavaScript ES2018 eksperimental lanjutan?)

// fungsi ekspor array-lib.js hapus (... forDeletion) (kembalikan this.filter (item =>! forDeletion.includes (item))) // main.js impor (hapus) dari "./array-lib .js "let arr = // :: This-Binding Syntax Proposal // using" remove "function as" virtual method "// tanpa memperluas Array.prototype arr = arr :: remove (2, 3, 5) console.log (arr) // [1, 4]

Berikut adalah beberapa cara hapus elemen dari array menggunakan javascript .

Semua metode yang dijelaskan jangan ubah array asli dan sebagai gantinya buat yang baru.

Jika Anda tahu indeks elemen

Misalkan Anda memiliki array dan Anda ingin menghapus elemen pada posisi i.

Salah satu caranya adalah dengan menggunakan irisan ():

const item = ["a", "b", "c", "d", "e", "f"] const i = 3 const filteredItems = item.slice (0, i-1) .concat (item. slice (i, items.length)) console.log (filteredItems)

slice () membuat array baru dengan indeks yang diterimanya. Kita cukup membuat array baru - dari awal hingga indeks yang ingin kita hapus, dan menggabungkan array lain dari posisi pertama setelah yang kita hapus hingga akhir array.

Jika Anda tahu artinya

Dalam hal ini, satu opsi yang baik adalah menggunakan filter (), yang menawarkan lebih banyak deklaratif pendekatan:

const item = ["a", "b", "c", "d", "e", "f"] const valueToRemove = "c" const filteredItems = item.filter (item => item! == valueToRemove) console.log (filteredItems)

Ini menggunakan fungsi panah ES6. Anda dapat menggunakan fitur tradisional untuk mendukung browser lama:

const item = ["a", "b", "c", "d", "e", "f"] const valueToRemove = "c" const filteredItems = item.filter (fungsi (item) (kembalikan item! = = valueToRemove)) console.log (filteredItems)

atau Anda dapat menggunakan Babel dan mengonversi kode ES6 Anda kembali ke ES5 agar lebih mudah dicerna oleh browser lama, tetapi tulis JavaScript modern dalam kode Anda.

Menghapus beberapa item

Bagaimana jika Anda ingin menghapus banyak elemen, bukan satu elemen?

Mari kita cari solusi paling sederhana.

Berdasarkan indeks

Anda cukup membuat fungsi dan menghapus item secara berurutan:

const item = ["a", "b", "c", "d", "e", "f"] const removeItem = (item, i) => item.slice (0, i-1) .concat (items.slice (i, items.length)) let filteredItems = removeItem (item, 3) filteredItems = removeItem (filteredItems, 5) // konsol ["a", "b", "c", "d"]. log (Item yang difilter)

Berdasarkan nilai

Anda dapat mencari penyertaan di dalam fungsi panggilan balik:

const item = ["a", "b", "c", "d", "e", "f"] const valuesToRemove = ["c", "d"] const filteredItems = item.filter (item => ! valuesToRemove.includes (item)) // ["a", "b", "e", "f"] console.log (filteredItems)

Hindari mengubah array asli

splice () (jangan bingung dengan slice ()) mengubah array asli dan harus dihindari.

Anda dapat menggunakan ES6.

Var array = ["1", "2", "3", "4", "5", "6"] var index = array.filter ((nilai) => nilai! = "3");

["1", "2", "4", "5", "6"]

Anda dapat melakukannya dengan mudah dengan metode filter:

Fungsi hapus (arrOriginal, elementToRemove) (kembalikan arrOriginal.filter (fungsi (el) (kembalikan el! == elementToRemove));) console.log (hapus (, 1));

Ini menghapus semua elemen dari array dan juga lebih cepat daripada kombinasi slice dan indexOf

Anda tidak boleh mengubah array dari array. Karena ini bertentangan dengan pola pemrograman fungsional. Anda dapat membuat larik baru tanpa merujuk larik yang ingin Anda modifikasi menggunakan filter metode es6;

Var myArray =;

Misalkan Anda ingin menghapus 5 dari array, Anda cukup melakukannya seperti ini.

MyArray = myArray.filter (nilai => nilai! == 5);

Ini akan memberi Anda array baru tanpa nilai yang ingin Anda hapus. Jadi hasilnya

; // 5 telah dihapus dari larik ini

Untuk pemahaman lebih lanjut, Anda dapat membaca dokumentasi MDN pada filter Array.filter

Jika Anda ingin array baru dengan posisi dihapus, Anda selalu dapat menghapus elemen tertentu dan memfilter array. Mungkin perlu memperluas objek array untuk browser yang tidak menerapkan metode pemfilteran, tetapi dalam jangka panjang akan lebih mudah karena yang Anda lakukan hanyalah ini:

Var my_array =; hapus my_array; console.log (my_array.filter (fungsi (a) (mengembalikan typeof a! == "undefined";)));

Harus ditampilkan

Jika Anda memiliki objek kompleks dalam array, dapatkah Anda menggunakan filter? Untuk situasi di mana $ .inArray atau array.splice tidak mudah digunakan. Terutama jika objeknya mungkin kecil dalam array.

Misalnya, jika Anda memiliki objek dengan bidang Id dan Anda ingin objek tersebut dihapus dari larik:

This.array = this.array.filter (fungsi (elemen, i) (kembalikan elemen.id! == idToRemove;));

Temukan indeks elemen array yang ingin Anda hapus, lalu hapus indeks itu dengan splice.

Metode splice() memodifikasi isi array dengan menghapus elemen yang ada dan/atau menambahkan elemen baru.

var array =; console.log (array) var index = array.indexOf (5); if (indeks> -1) (array.splice (indeks, 1);) // array = console.log (array);

Parameter splice kedua adalah jumlah elemen yang akan dihapus. Perhatikan bahwa splice memodifikasi array di tempatnya dan mengembalikan array baru yang berisi elemen yang dihapus.

Anda memiliki 1 hingga 9 array dan Anda ingin menghapus 5 menggunakan kode di bawah ini.

var nomorArray =; var newNumberArray = numberArray.filter (m => (kembalikan m! == 5;)); console.log ("Array baru, 5 dihapus", newNumberArray);

Jika Anda ingin menggunakan beberapa nilai ex: - 1,7,8

var nomorArray =; var newNumberArray = numberArray.filter (m => (kembali (m! == 1) && (m! == 7) && (m! == 8);)); console.log ("Array baru, 5 dihapus", newNumberArray);

Jika Anda ingin menghapus nilai array di ex array: -

var nomorArray =; var removebleArray =; var newNumberArray = numberArray.filter (m => (kembali! removebleArray.includes (m);)); console.log ("Array baru, dihapus", newNumberArray);

termasuk browser yang didukung - tautan

Saya tahu sudah ada banyak jawaban, tetapi banyak dari mereka tampaknya memperumit masalah. Berikut adalah cara sederhana dan rekursif untuk menghapus semua instance kunci - panggil self hingga indeks ditemukan. Ya, ini hanya berfungsi di browser indexOf, tetapi sederhana dan dapat dengan mudah diisi.

Fungsi mandiri

Fungsi removeAll (array, key) (var index = array.indexOf (key); if (index === -1) return; array.splice (index, 1); removeAll (array, key);)

Metode prototipe

Array.prototype.removeAll = function (key) (var index = this.indexOf (key); if (index === -1) return; this.splice (indeks, 1); this.removeAll (kunci);)

Array.prototype.removeItem = fungsi (a) (untuk (i = 0; i< this.length; i++) { if (this[i] == a) { for (i2 = i; i2 < this.length - 1; i2++) { this = this; } this.length = this.length - 1 return; } } } var recentMovies = ["Iron Man", "Batman", "Superman", "Spiderman"]; recentMovies.removeItem("Superman");



Bagaimana cara menghapus elemen dari array berdasarkan nilai? (dua puluh)

// diedit terima kasih kepada MarcoCI atas sarannya

coba ini:

Fungsi wantDelete (item, arr) (untuk (var i = 0; i

semoga ini membantu Anda

Apakah ada cara untuk menghapus elemen dari array JavaScript?

Diberikan sebuah array:

Var ary = ["tiga", "tujuh", "sebelas"];

Saya ingin melakukan sesuatu seperti:

RemoveItem("tujuh", ary);

Saya melihat splice () tetapi itu hanya menghapus nomor posisi, sedangkan saya perlu sesuatu untuk menghapus elemen berdasarkan nilainya.

Biarkan commentsWithoutDeletedArray = commentsArray.filter ((comment) =>!(Comment.Id === commentId));

Berikut adalah versi yang menggunakan fungsi inArray jQuery:

Indeks var = $ .inArray (item, array); if (indeks! = -1) (array.splice (indeks, 1);)

Anda dapat mencapai ini menggunakan fungsi Lodash _.menghapus.

var array = ["tiga", "tujuh", "sebelas"]; var evens = _.remove (array, fungsi (e) (kembalikan e! == "tujuh";)); console.log (genap);

Const _ = membutuhkan ("lodash"); _.tanpa (, 2); // ->

Memang, saya tidak mengerti mengapa ini tidak dapat diselesaikan dengan

Arr = arr.filter (nilai => nilai! == "tujuh");

Atau mungkin Anda ingin menggunakan vanilla JS

Arr = arr.filter (fungsi (nilai) (nilai kembali! == "tujuh"));

Varian lain:

If (! Array.prototype.removeArr) (Array.prototype.removeArr = function (arr) (if (! Array.isArray (arr)) arr =; // mari bersikap baik kepada orang yang memberikan nilai non-array di sini .. itu bisa saya! var that = this; if (arr.length) (var i = 0; while (i -1) (that.splice (i, 1);) else i ++; )) kembalikan itu; ))

Ini adalah indexOf () di dalam loop lagi, tetapi dengan asumsi array yang akan dihapus relatif kecil terhadap array yang akan dibersihkan; setiap penghapusan memperpendek loop sementara.

Ini akan memungkinkan Anda untuk melakukan hal berikut:

Var ary = ["tiga", "tujuh", "sebelas"]; var aryWithoutSeven = ary.filter (fungsi (nilai) (nilai kembali! = "tujuh")); console.log (aryWithoutSeven); // mengembalikan ["tiga", "sebelas"]

Ini juga telah dicatat di utas ini di tempat lain: https: //.com/a/20827100/293492

Jangan gunakan opsi hapus - itu membuat lubang di array, karena tidak mengindeks ulang elemen setelah elemen yang dihapus.

> Array.prototype.remove = function (v) (... hapus ini...); > var myarray = ["3", "24", "55", "2"]; undefined> myarray.remove("55"); undefined> myarray ["3", "24", "2"]

Satu liner akan melakukannya

Var ary = ["tiga", "tujuh", "sebelas"]; // Hapus item "tujuh" dari array var filteredAry = ary.filter (fungsi (e) (kembalikan e! == "tujuh")) // => ["tiga", "sebelas"] // Di ECMA6 (panah sintaks fungsi): var filteredAry = ary.filter (e => e! == "tujuh")

Ini menggunakan fungsi filter di JS. Ini didukung di IE9 dan lebih tinggi.

filter () memanggil fungsi panggilan balik yang disediakan sekali untuk setiap elemen dalam larik dan membuat larik baru dari semua nilai yang panggilan baliknya mengembalikan nilai yang bernilai true. callback dipanggil hanya untuk indeks array yang telah diberi nilai; itu tidak dipanggil untuk indeks yang telah dijatuhkan atau yang tidak pernah diberi nilai. Elemen larik yang gagal dalam tes panggilan balik akan dilewati begitu saja dan tidak disertakan dalam larik baru.

Jadi pada dasarnya sama dengan solusi for (var key in ary) (...) lainnya, kecuali for in didukung sebagai IE6.

Pada dasarnya filter adalah metode praktis yang terlihat jauh lebih baik (dan dirantai) dibandingkan dengan for in constructor (AFAIK).

Periksa:

For (var i in array) (if (array [i] == "seven") (array.splice (i, 1); break;))

dan dalam fungsi:

Fungsi removeItem (array, item) (untuk (var i dalam array) (if (array [i] == item) (array.splice (i, 1); break;))) removeItem (array, "tujuh");

Menghapus semua elemen yang cocok dari array (bukan hanya yang pertama tampaknya menjadi jawaban paling umum di sini):

While ($ .inArray (item, array)> -1) (array.splice ($. InArray (item, array), 1);)

Saya telah menggunakan jQuery untuk beberapa kerja keras, tetapi Anda mendapatkan ide jika Anda ingin menggunakan bahasa asli.

Triknya adalah mengulang array dari awal hingga awal, jadi Anda tidak mengacaukan indeks saat menghapus elemen.

Var deleteMe = function (arr, me) (var i = arr.length; while (i--) if (arr [i] === me) arr.splice (i, 1);) var arr = ["orange "," merah "," hitam "," oranye "," putih "," oranye "]; deleteMe(arr, "oranye");

arr sekarang ["merah", "hitam", "putih"]

Fungsi cleanArrayOfSpecificTerms (array, unknownTermsArray) ($ .each (unwantedTermsArray, fungsi (indeks, nilai) (indeks var = array.indexOf (nilai); if (indeks> -1) (array.splice (indeks, 1);)) ); kembalikan larik;)

Untuk menggunakan, ikuti langkah-langkah ini:

Var notInclude = ["Tidak", "Tidak", "Pertama", "Terakhir", "Sebelumnya", "Berikutnya", "anjing", "kucing"]; var splitTerms = ["panggilan", "log", "anjing", "kucing", "topik", "ubah", "harga"]; cleanArrayOfSpecificTerms (splitTerms, notInclude)

Saya mencoba menggunakan metode fungsi dari jbaron di atas, tetapi ternyata saya perlu menjaga array asli tidak berubah untuk digunakan nanti dan membuat array baru seperti ini:

Var newArray = referenceArray;

Fungsi newArrRemoveItem (array, item, newArray) (untuk (var i = 0; i< array.length; i++) { if(array[i]!=item){ newArray.push(array[i]); } } }

Lalu saya menggunakannya seperti ini:

Var vesselID = record.get("VesselID"); var otherVessels = new Array(); newArrRemoveItem (vesselArr, vesselID, Kapal lain);

Sekarang shipArr tetap utuh, dan setiap kali saya mengeksekusi kode di atas, array otherVessels menyertakan semuanya kecuali elemen CAID terakhir.

indexOf adalah sebuah opsi, tetapi implementasinya pada dasarnya mencari nilai di seluruh array, sehingga runtime bertambah dengan ukuran array. (jadi ini ada di setiap browser, saya pikir saya hanya menguji Firefox).

Saya tidak memiliki IE6 untuk diperiksa, tetapi saya akan menyebutnya sebagai taruhan aman bahwa Anda dapat memeriksa setidaknya satu juta elemen array per detik dengan cara ini di hampir semua mesin klien. Jika [ukuran array] * [penelusuran per detik] dapat bertambah lebih dari satu juta, Anda harus mempertimbangkan implementasi lain.

Pada dasarnya Anda dapat menggunakan objek untuk membuat indeks untuk array Anda, misalnya:

Indeks var = ("tiga": 0, "tujuh": 1, "sebelas": 2);

Kerangka kerja JavaScript normal apa pun akan membuat indeks pencarian untuk objek tersebut sehingga Anda dapat dengan cepat menerjemahkan kunci ke suatu nilai, tidak peduli berapa banyak properti yang dimiliki objek tersebut.

Ini hanyalah metode dasar, tergantung pada kebutuhan Anda, Anda dapat menggabungkan beberapa objek dan / atau array untuk membuat data yang sama dapat dicari dengan cepat untuk properti yang berbeda. Jika Anda memberikan kebutuhan spesifik Anda, saya dapat menyarankan struktur data yang lebih spesifik.

// Fungsi ini memungkinkan penghapusan array genap dari array var removeFromArr = function (arr, elem) (var i, len = arr.length, new_arr =, sort_fn = function (a, b) (return a - b;); for ( saya = 0; saya< len; i += 1) { if (typeof elem === "object" && typeof arr[i] === "object") { if (arr[i].toString() === elem.toString()) { continue; } else { if (arr[i].sort(sort_fn).toString() === elem.sort(sort_fn).toString()) { continue; } } } if (arr[i] !== elem) { new_arr.push(arr[i]); } } return new_arr; }

Contoh penggunaan

Var arr =, "abc", 1, "1", 1]; hapusDariArr (arr, 1); // ["2",, "abc", "1"] var arr = [, 2, "a",,]; hapusDariArr (arr,); //]

Biarkan arr =; console.log (arr); // hasil biarkan indeks = arr.indexOf (30); if (indeks> -1) (arr.splice (indeks, 1);) console.log (arr); // hasil

Var indeks = array.indexOf("item"); if (indeks! = - 1) (array.splice (indeks, 1);)

menggeser

Gunakan .shift untuk menghapus elemen pertama dari array.

Sebagai contoh:

Array var =; array.shift();

hasil larik di:

Sebagai contoh:

Array var =; array.pop();

hasil larik di:

Kedua metode mengembalikan item yang dihapus;

sambatan

Use.splice() untuk menghapus serangkaian elemen dari array. .splice() mengambil dua parameter, indeks awal dan kardinalitas opsional untuk dihapus. Jika parameter kedua tidak, splice() akan menghapus semua elemen dari indeks awal hingga akhir array.

Sebagai contoh:

Array var =; array.sambatan (1, 2);

meninggalkan array yang berisi:

Kembalinya array.splice() adalah array baru yang berisi elemen yang dihapus. Dalam contoh di atas, pengembaliannya adalah:

Jadi, menghilangkan parameter kedua secara efektif membagi larik menjadi dua larik dengan yang asli diakhiri dengan indeks yang ditentukan:

Array var =; array.sambatan (2);

Meninggalkan array yang berisi dan kembali.

menghapus

Gunakan delete untuk menghapus elemen dari array tanpa mengubah panjang array:

Array var =; console.log (array.length); // 5 hapus larik; console.log (array); // console.log (array.length); // 5

Array.prototype.length

Menetapkan nilai ke panjang array mengubah panjang dengan nilai yang ditentukan. Jika nilai baru kurang dari panjang array, elemen akan dihapus dari akhir nilai.

Array =; array.panjang = 2; console.log (array); //

Saya telah menjelaskan hanya sebagian dari metode untuk bekerja dengan array.

Di sini kita akan berbicara tentang menambahkan, menghapus elemen array. Tentang pembalik dan pengurutan array, serta mengiris, mengganti dan menggabungkan array.

Menambahkan elemen ke array.

Anda dapat menggunakan properti length untuk menambahkan elemen baru ke array:

Var myArray = ["Apple", "Microsoft", "Google", "Facebook"]; myArray = "Yahoo!"; console.log (myArray); // ["Apple", "Microsoft", "Google", "Facebook", "Yahoo!"]

Ini akan berhasil karena elemen array diberi nomor dari nol, dan panjang satu lagi. Panjang selalu setara indeks + 1 jadi sangat mudah untuk menambahkan elemen baru ke akhir array. Aneh, tetapi Anda dapat menambahkan elemen pada posisi yang jauh lebih besar dari panjang array itu sendiri:

Var myArray = ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards"]; myArray = "Lindsey Buckingham"; console.log (myArray); // ["Jimi Hendrix", "Eric Clapton", "Jimmy Page", "Keith Richards", undefined × 95, "Lindsey Buckingham"] console.log (myArray.length); // 100

Seperti yang ditunjukkan dalam komentar, 95 slot kosong dan elemen "Lindsey Buckingham" akan ditambahkan ke akhir array. Setelah itu, kita mendapatkan panjang 100. Cara lain untuk menambahkan elemen baru ke array adalah dengan menggunakan metode dorongan ():

Var myArray = ["Paul McCartney", "John Lennon", "George Harrison"]; myArray.push ("Ringo Starr", "George Martin"); console.log (myArray); // ["Paul McCartney", "John Lennon", "George Harrison", "Ringo Starr", "George Martin"]

metode dorongan () selalu mengembalikan panjang array yang baru (dalam kasus kami 5). Anda dapat menambahkan item menggunakan sambungan ():

Var myArray = ["acorn", "beech", "mongongo", "macadamia"]; myArray.splice (2, 0, "mete"); // menambahkan "mete" ke dalam indeks 2 console.log (myArray); // ["acorn", "beech", "mete", "mongongo", "macadamia"]

Ketika argumen kedua adalah 0, itu berarti tidak ada elemen yang akan dihapus, dan oleh karena itu argumen berikutnya akan ditambahkan ke array pada posisi yang ditentukan dalam argumen pertama.

Menghapus elemen dari array

Menghapus elemen sedikit lebih sulit daripada menambahkannya. Untuk menghapus elemen dari akhir array, seseorang dapat menggunakan pop ():

Var myArray = ["7-up", "Sprite", "Ale Jahe", "Limun"]; myArray.pop(); console.log (myArray); // ["7-up", "Sprite", "Ginger Ale"]

metode pop () selalu menghapus elemen terakhir dalam array dan mengembalikannya.

Anda juga bisa menggunakan sambungan () metode:

Var myArray = ["singkong", "pala", "lupin", "rhubarb"]; myArray.splice (2, 1); // hapus elemen pada indeks 2 console.log (myArray); // ["singkong", "pala", "rhubarb"]

Berbeda dengan metode sambungan (), yang digunakan untuk menambahkan elemen, di sini argumen kedua adalah 1, yang mengatakan bahwa kita ingin menghapus elemen dengan indeks 2 (atau ke-3 berturut-turut). Dalam hal ini, elemen "lupin" telah dihilangkan.

Anda dapat menghapus elemen array menggunakan operator menghapus:

Var myArray = ["Byte Bandit", "Eliza", "Jeefo", "Michelangelo"]; console.log (myArray.length); // 4 hapus myArray; // hapus Eliza console.log (myArray.length); // 4 console.log (myArray); // ["Byte Bandit", undefined × 1, "Jeefo", "Michelangelo"]

Catatan penting pertama: menghapus () tidak mengubah panjang larik setelah elemen dihapus (bahkan jika itu adalah elemen terakhir dalam larik). Kedua: menghapus () mengubah nilai elemen yang dihapus menjadi tidak terdefinisi, jadi saat membalikkan myArray = tidak terdefinisi.

Cara yang baik untuk menghapus elemen dari array adalah dengan menggunakan Array.remove milik John Resig. Di bawah ini adalah contoh penggunaan yang diambil dari halamannya:

// Hapus Array - Oleh John Resig (Berlisensi MIT) Array.prototype.remove = function (dari, ke) (var rest = this.slice ((ke || dari) + 1 || this.length); this.length = dari< 0 ? this.length + from: from; return this.push.apply(this, rest); }; // Удаление 2 элемента из массива array.remove(1); // Удаление 2-ого элемента с конца массива array.remove(-2); // Удаление второго и третьего элемента array.remove(1,2); // Удаление последнего и предпоследнего элемента array.remove(-2,-1);

Anda mungkin ingin melihat solusi oleh Viral Patel, salah satu fungsi di Underscore.js, atau grep () jQuery.

Selain itu, di JavaScript ada metodenya menggeser (), yang menghapus elemen pertama dalam array dan mengembalikan nilainya. Mari kita lihat kodenya:

Var myArray = ["Matt Kramer", "Jason Bieler", "Tom Defile", "Phil Varone"]; console.log (myArray.length); // 4 var firstItem = myArray.shift(); console.log (item pertama); // Matt Kramer console.log (myArray.length); // 3 console.log (myArray); // ["Jason Bieler", "Tom Defile", "Phil Varone"]

Menggunakan metode menggeser () kami menghapus item, tetapi menyimpan nilainya dalam variabel firstItem kami. Panjang array telah berubah dari 4 menjadi 3.

Metode ini dapat berguna dalam hubungannya dengan metode dorongan (). Dengan menggunakannya bersama-sama, kita dapat secara efisien mengantre elemen dalam array. Kami menjaga panjang array dengan menghapus elemen dari awal dan menambahkan yang baru ke akhir.

Sebaliknya, kita bisa menggunakan metode tidak bergeser () untuk menambahkan elemen ke awal array:

Var myArray = ["apito", "alat musik", "maraca"]; console.log (myArray.length); // 3 myArray.unshift("bilah berpadu", "tan-tan"); console.log (myArray.length); // 5 console.log (myArray); // ["bilah berpadu", "tan-tan", "apito", "alat musik", "maraca"]

Menggunakan metode tidak bergeser () dengan metode pop(), Anda dapat mengantri mundur dengan menambahkan elemen ke awal dan menghapus dari akhir array.

Pembalikan dan pengurutan elemen array.

Untuk membalik elemen dalam array, kita dapat menggunakan membalikkan ():

Var myArray = ["hitung mundur", "akhir", "yang"]; console.log (myArray); // ["hitung mundur", "final", "the"] myArray = myArray.reverse(); console.log (myArray); // ["hasil akhir"]

Urutkan elemen array menjadi Sesuai abjad mungkin menggunakan metode mengurutkan ():

Var myArray = ["xylophones", "zebra", "juggernauts", "alpukat"]; console.log (myArray); // ["xylophones", "zebra", "juggernauts", "alpukat"] myArray = myArray.sort (); console.log (myArray); // ["alpukat", "juggernauts", "xylophones", "zebra"]

Tapi itu tidak akan berhasil dengan angka.

Var myArray =; console.log (myArray); // myArray = myArray.sort(); console.log (myArray); //

Jika Anda perlu mengurutkan angka, maka Anda dapat menggunakan kode berikut:

Fungsi compareNumbers (a, b) (mengembalikan a - b;) var myArray =; console.log (myArray); // myArray = myArray.sort (bandingkanNumber); console.log (myArray); //

Seperti yang ditunjukkan di atas dengan fungsi sederhana yang disisipkan mengurutkan (), array yang berisi angka-angka akan diurutkan dengan benar.

Menggabungkan array.

Anda dapat menggabungkan 2 atau lebih array dan mendapatkan 1 array yang berisi elemen array gabungan. Untuk ini kami menggunakan metode concat():

Var myArray = ["Jay Ferguson", "Andrew Scott"]; var myArray2 = ["Chris Murphy", "Patrick Pentland"]; var myNewArray = myArray.concat (myArray2); console.log (myNewArray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Var myArray = ["Jay Ferguson", "Andrew Scott"]; var myNewArray = myArray.concat("Chris Murphy", "Patrick Pentland"); console.log (myNewArray); // ["Jay Ferguson", "Andrew Scott", "Chris Murphy", "Patrick Pentland"]

Memisahkan array.

Anda dapat membuat array baru yang berisi 1 atau lebih elemen dari array yang ada menggunakan fungsi mengiris ():

Var myArray = ["Vokal", "Bass", "Gitar", "Drum", "Apel", "Jeruk"]; var myNewArray = myArray.slice (4); console.log (myNewArray); // ["Apel", "Jeruk"]

metode mengiris () membutuhkan 1 atau 2 argumen. Jika 1 argumen (indeks) dilewatkan, maka array baru dibuat dari semua elemen yang lama, mulai dari indeks yang diberikan. Jika 2 argumen dilewatkan, maka array baru dibuat dari elemen mulai dari argumen pertama dan hingga elemen pada indeks yang diteruskan pada parameter kedua, tidak termasuk yang terakhir. Agar lebih jelas, mari kita lihat kode di bawah ini:

Var myArray = ["Vokal", "Bass", "Gitar", "Drum", "Apel", "Jeruk"]; var myNewArray = myArray.slice (0, 4); console.log (myNewArray); // ["Vokal", "Bass", "Gitar", "Drum"]

Mengganti elemen dalam array.

Kita gunakan sambungan () untuk menghapus elemen dari array, tetapi kita juga dapat mengganti elemen dalam array dengan elemen baru:

Var myArray = ["Sungai Cuomo", "Patrick Wilson", "Brian Bell", "Matt Sharp"]; myArray.splice (3, 1, "Scott Shriner"); // ganti 1 elemen dengan indeks 3 console.log (myArray); // ["Sungai Cuomo", "Patrick Wilson", "Brian Bell", "Scott Shriner"]

metode sambungan () selalu mengembalikan array yang berisi elemen yang telah dihapus. Baris 2 akan mengembalikan 1 item "Brian Bell".

Kesimpulan

Artikel ini telah menjelaskan metode untuk bekerja dengan array dalam JavaScript. Beberapa elemen tambahan dapat dilihat di MDN yang belum saya sertakan dalam posting ini. Mereka hanya bekerja di IE9 +, jadi mungkin tidak berguna.

Ada yang ingin ditambahkan? Atau apakah Anda tahu perpustakaan menarik yang akan membantu Anda mengelola array? Tolong beri komentar anda!