Setiap item dari array ini adalah beberapa nomor.
var items = Array(523,3452,334,31, ...5346);
Bagaimana cara saya mengganti beberapa angka dengan array dengan yang baru?
Misalnya, kami ingin mengganti 3452 dengan 1010, bagaimana kami melakukan ini?
javascript
arrays
James
sumber
sumber
replace
metode untuk Array?Jawaban:
Juga disarankan Anda tidak menggunakan metode konstruktor untuk menginisialisasi array Anda. Sebagai gantinya, gunakan sintaks literal:
Anda juga dapat menggunakan
~
operator jika Anda tertarik dengan JavaScript singkat dan ingin mempersingkat-1
perbandingan:Kadang-kadang saya bahkan suka menulis
contains
fungsi untuk mengabstraksi cek ini dan membuatnya lebih mudah untuk memahami apa yang terjadi. Apa yang luar biasa adalah ini berfungsi pada array dan string keduanya:Dimulai dengan ES6 / ES2015 untuk string, dan diusulkan untuk ES2016 untuk array, Anda dapat lebih mudah menentukan apakah sumber berisi nilai lain:
sumber
contains
:var contains = (a, b) => !!~a.indexOf(b)
: PArray.prototype.includes
saja.in
untuk melihat apakah suatu objek memiliki kunci (misalnya,'property' in obj
), atau Anda juga dapat mengulangi nilai objek denganObject.values(obj).forEach(value => {})
.The
Array.indexOf()
Metode akan menggantikan contoh pertama. Untuk mendapatkan setiap contoh gunakanArray.map()
:Tentu saja, itu menciptakan array baru. Jika Anda ingin melakukannya di tempat, gunakan
Array.forEach()
:sumber
Array.indexOf()
diperkenalkan bersamaanmap()
danforEach()
. Jika Anda mendukung IE8 atau sebelumnya, dan Anda tidak menggunakan shim untuk menambahkan dukungan, lebih baik ikuti jawaban mellamokb .Solusi saya yang disarankan adalah:
Operasi sambatan akan menghapus 1 item, mulai dari posisi 1 di array (yaitu
3452
), dan akan menggantinya dengan item baru1010
.sumber
1
item tersebut akan dihapus padahal sebenarnya parameter pertama berarti bahwa operasi berlangsung pada indeks1
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Gunakan indexOf untuk menemukan elemen.
sumber
Mudah dicapai dengan
for
loop.sumber
Anda dapat mengedit sejumlah daftar menggunakan indeks
sebagai contoh :
sumber
Jika menggunakan objek yang kompleks (atau bahkan yang sederhana) dan Anda dapat menggunakan es6,
Array.prototype.findIndex
itu bagus. Untuk array OP, mereka bisa melakukannya,Untuk objek yang lebih kompleks, ini benar-benar bersinar. Sebagai contoh,
sumber
Penggantian dapat dilakukan dalam satu baris:
Atau buat fungsi untuk digunakan kembali:
sumber
Cara ES6 :
Kami ingin menggantinya
3452
dengan1010
, solusi:Tentunya, pertanyaannya adalah selama bertahun-tahun yang lalu dan untuk saat ini saya hanya memilih untuk menggunakan solusi yang tidak dapat diubah , tentu saja, itu luar biasa untuk
ReactJS
.Untuk penggunaan yang sering saya tawarkan di bawah ini berfungsi:
sumber
Metode pertama
Cara terbaik hanya dalam satu baris untuk mengganti atau memperbarui item array
Misalnya:
Metode kedua
Cara sederhana lain untuk melakukan operasi yang sama adalah:
sumber
Cara termudah adalah dengan menggunakan beberapa perpustakaan seperti underscorejs dan metode peta.
sumber
replace
sekarang ..._.replace([1, 2, 3], 2, 3);
Cara abadi untuk mengganti elemen dalam daftar menggunakan operator dan
.slice
metode penyebaran ES6 .Verifikasi itu berfungsi
sumber
Jika Anda tahu nilainya kemudian gunakan,
Jika Anda ingin tahu bahwa nilai itu ada atau tidak, maka gunakan,
Jika Anda tahu tempat (posisi) maka langsung gunakan,
Jika Anda ingin mengganti beberapa elemen, dan Anda hanya tahu posisi awal saja artinya,
untuk lebih lanjut tentang .splice
sumber
dari sini Anda dapat menghapus nilai tertentu dari array dan berdasarkan indeks yang sama Anda dapat memasukkan nilai dalam array.
sumber
Nah, jika ada yang interresting tentang cara mengganti objek dari indeks dalam array, berikut ini solusinya.
Temukan indeks objek dengan idnya:
Ganti objek menggunakan metode Object.assign ():
sumber
Jawaban dari @ gilly3 bagus.
Cara memperluas ini untuk berbagai objek
Saya lebih suka cara berikut untuk memperbarui catatan baru yang diperbarui ke dalam array catatan saya ketika saya mendapatkan data dari server. Itu membuat pesanan tetap utuh dan cukup lurus ke depan satu liner.
users = users.map(u => u.id !== editedUser.id ? u : editedUser);
sumber
Pertama, tulis ulang array Anda seperti ini:
Selanjutnya, akses elemen dalam array melalui nomor indeksnya. Rumus untuk menentukan nomor indeks adalah:
n-1
Untuk mengganti item pertama
(n=1)
dalam array, tulis:Dalam contoh Anda, angkanya
3452
ada di posisi kedua(n=2)
. Jadi rumus untuk menentukan angka indeks adalah2-1 = 1
. Jadi tulis kode berikut untuk mengganti3452
dengan1010
:sumber
Inilah jawaban dasar yang dibuat menjadi fungsi yang dapat digunakan kembali:
sumber
Saya memecahkan masalah ini menggunakan untuk loop dan iterasi melalui array asli dan menambahkan posisi pencocokan arreas ke array lain dan kemudian mengulang melalui array itu dan mengubahnya dalam array asli kemudian mengembalikannya, saya menggunakan fungsi panah tetapi fungsi biasa akan bekerja juga.
sumber
sumber
Cara termudah adalah ini.
sumber
replaceWhat = 523, replaceWith = 999999
tidak menghasilkan hasil yang benarIni satu liner. Diasumsikan bahwa item akan berada dalam array.
sumber
Jika Anda ingin oneliner gula sintax sederhana, Anda bisa:
Suka:
Jika Anda tidak memiliki id, Anda dapat merangkai elemen seperti:
sumber