Saya ingin menelusuri objek-objek yang terdapat dalam array dan mengubah properti masing-masing. Jika saya melakukan ini:
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j]);
}
Konsol harus memunculkan setiap objek dalam array, bukan? Namun sebenarnya itu hanya menampilkan objek pertama. jika saya menghibur log array di luar loop, semua objek muncul sehingga pasti ada lebih banyak di sana.
Bagaimanapun, inilah masalah selanjutnya. Bagaimana cara mengakses, misalnya Object1.x dalam array, menggunakan loop?
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j.x]);
}
Ini mengembalikan "tidak terdefinisi." Sekali lagi log konsol di luar loop memberitahu saya bahwa semua objek memiliki nilai untuk "x". Bagaimana cara mengakses properti ini di loop?
Saya direkomendasikan di tempat lain untuk menggunakan array terpisah untuk masing-masing properti, tetapi saya ingin memastikan saya telah menghabiskan jalan ini terlebih dahulu.
Terima kasih!
sumber
j
adalah angka. Anda mendefinisikannya di bagian atas loop Anda.myArray
sebenarnya bukan hanya array ??#forEach
bekerja. Tetapi pertanyaannya adalah untuk loop.Jawaban:
Gunakan forEach dengan fungsi array bawaan.
Array.forEach()
:sumber
forEach
tidak didukung di IE 9. Jangan salahkan saya! Produk majikan saya memberikan dukungan untuk itu!yourArray
dari sesuatu sepertidocument.getElementsByClassName
itu akan menjadi HTMLCollection, bukan array. Maka pertanyaan ini bisa membantu.forEach
memblokir dan tidak mendukungawait
.Lokfor...of
akan.Beberapa kasus menggunakan perulangan melalui array dengan cara pemrograman fungsional dalam JavaScript:
1. Hanya loop melalui array
Catatan: Array.prototype.forEach () bukan cara fungsional secara tegas, karena fungsi yang diperlukan karena parameter input tidak seharusnya mengembalikan nilai, yang dengan demikian tidak dapat dianggap sebagai fungsi murni.
2. Periksa apakah ada elemen dalam array yang lulus tes
3. Transformasikan ke array baru
Catatan: Metode map () membuat array baru dengan hasil memanggil fungsi yang disediakan pada setiap elemen dalam array panggilan.
4. Jumlahkan properti tertentu, dan hitung rata-rata
5. Buat array baru berdasarkan yang asli tetapi tanpa mengubahnya
6. Hitung jumlah setiap kategori
7. Ambil subset array berdasarkan kriteria tertentu
Catatan: Metode filter () membuat array baru dengan semua elemen yang lulus tes diimplementasikan oleh fungsi yang disediakan.
8. Urutkan sebuah array
9. Temukan elemen dalam array
Metode Array.prototype.find () mengembalikan nilai elemen pertama dalam array yang memenuhi fungsi pengujian yang disediakan.
Referensi
sumber
const people = [ {name: "john", age:23}, {name: "john", age:43}, {name: "jim", age:101}, {name: "bob", age:67} ]; const sortByAge = people.map(p => { console.log(p.name) return p }).sort(function (p1, p2) { return p1.age - p2.age; }); console.log(sortByAge);
Anda dapat menggunakan for..of loop untuk mengulang array objek.
Salah satu hal terbaik tentang
for..of
loop adalah mereka dapat mengulang lebih dari sekedar array. Anda dapat mengulangi semua jenis iterable, termasuk peta dan objek. Pastikan Anda menggunakan transpiler atau sesuatu seperti TypeScript jika Anda perlu mendukung browser lama.Jika Anda ingin beralih di atas peta, sintaksisnya sebagian besar sama dengan yang di atas, kecuali ia menangani kunci dan nilainya.
Saya menggunakan
for..of
loop untuk hampir semua jenis iterasi yang saya lakukan dalam Javascript. Selain itu, salah satu hal paling keren adalah mereka juga bekerja dengan async / menunggu juga.sumber
sumber
Inilah contoh bagaimana Anda bisa melakukannya :)
sumber
track
properti untuk setiap elemen dan menugaskannya ke variabel untuk digunakan atau interpolasi di bagian lain dari kode?Berkeliaran melalui berbagai objek adalah fungsi yang cukup mendasar. Inilah yang bekerja untuk saya.
sumber
myArray[j.x]
secara logis salah.Gunakan
(myArray[j].x);
sebagai gantinyasumber
Ini sangat sederhana menggunakan metode forEach sejak ES5 +. Anda dapat secara langsung mengubah setiap properti dari setiap objek dalam array Anda.
Jika Anda ingin mengakses properti tertentu pada setiap objek:
sumber
Berikut cara lain untuk mengulangi melalui berbagai objek (Anda perlu memasukkan pustaka jQuery ke dokumen Anda untuk ini).
sumber
$.each
metode.Ini akan berhasil. Looping array yang menyeluruh (yourArray). Kemudian loop melalui properti langsung dari setiap objek (eachObj).
sumber
Array objek iterasi, menggunakan jQuery, (gunakan parameter kedua untuk mencetak string).
sumber
Ini adalah salah satu cara bagaimana saya bisa mencapainya.
sumber
Jawaban yang diterima menggunakan fungsi normal. Jadi memposting kode yang sama dengan sedikit modifikasi menggunakan fungsi panah di forEach
Juga dalam $. Setiap Anda dapat menggunakan fungsi panah seperti di bawah ini
sumber
Hati-hati dengan Kicks belakang (`)
sumber
Ini mungkin membantu seseorang. Mungkin itu bug di Node.
Ini tidak berfungsi:
Tapi ini berhasil ...
Ini juga berfungsi ...
TAPI hanya membalik urutan tidak berfungsi. Saya menduga ada semacam optimasi internal di sini yang merusak Node.
Kesalahan mengatakan array tidak terdefinisi, tetapi tidak: - / Node v11.15.0
sumber