Saya bertanya-tanya apakah ada cara untuk melakukan sesuatu seperti foreach
loop PHP di JavaScript. Fungsi yang saya cari adalah sesuatu seperti Potongan PHP ini:
foreach($data as $key => $value) { }
Saya sedang melihat for..in
loop JS , tetapi tampaknya tidak ada cara untuk menentukan as
. Jika saya melakukan ini dengan 'normal' untuk loop ( for(var i = 0; i < data.length; i++
), apakah ada cara untuk mengambil pasangan nilai kunci =>?
sumber
Object.entries
panggilan. Saya tidak menjalankan tes apa pun.hasOwnProperty
digunakan untuk memeriksa apakah Andatarget
benar - benar memiliki properti itu, daripada mewarisinya dari prototipe. Yang sedikit lebih sederhana adalah:Itu hanya cek yang
k
tidak metode (seolah-olahtarget
adalaharray
Anda akan mendapatkan banyak metode waspada, misalnyaindexOf
,push
,pop
, dll.)sumber
Object.keys
.Object.keys(target).forEach(function (key) { target[key]; });
.target
dibuat menggunakanObject.create(null)
, kode harus diubahtarget.hasOwnProperty(k)
->Object.prototype.hasOwnProperty.call(target,k)
k
,target
danproperty
? Bagi saya, non-javascripter area yang tidak ditentukan ini :)Tidak ada yang menyebutkan
Object.keys
jadi saya akan menyebutkannya.sumber
for of
tc39wiki.calculist.org/es6/for-ofuntuk ... di akan bekerja untuk Anda.
Dalam JavaScript modern Anda juga dapat melakukan ini:
sumber
Sintaks php hanya gula.
sumber
Saya berasumsi Anda tahu itu
i
adalah kuncinya dan Anda bisa mendapatkan nilai melaluidata[i]
(dan hanya ingin jalan pintas untuk ini).ECMAScript5 memperkenalkan
forEach
[MDN] untuk array (sepertinya Anda memiliki array):Dokumentasi MDN menyediakan shim untuk browser yang tidak mendukungnya.
Tentu saja ini tidak berfungsi untuk objek, tetapi Anda dapat membuat fungsi serupa untuk mereka:
Karena Anda menandai pertanyaan dengan jquery, jQuery menyediakan
$.each
[docs] yang loop atas struktur array dan objek.sumber
forEach
, bukan objekforEach
.for each
sintaksis.for each (let val in myObj) console.log(val);
.Anda dapat menggunakan
for..in
untuk itu.sumber
Dalam javascript, setiap objek memiliki sekelompok pasangan nilai kunci bawaan yang memiliki informasi meta. Saat Anda menggilir semua pasangan nilai kunci untuk objek yang Anda lewati juga. Penggunaan hasOwnProperty () menyaring ini.
sumber
ES6 akan menyediakan Map.prototype.forEach (panggilan balik) yang dapat digunakan seperti ini
sumber
myMap
?sumber
[['a', 1],['b',2],['c',3]]
. TheforEach
mendekonstruksi masing-masing kunci / array nilai dan menetapkan dua variabel untukkey
danvalue
, untuk digunakan sebagai yang Anda inginkan dalam fungsi - di sini output dalamconsole.log
.Anda dapat menggunakan loop 'untuk masuk' untuk ini:
sumber
Di bawah ini adalah contoh yang sedekat yang Anda dapatkan.
Jika Anda menggunakan jQuery, lihat: http://api.jquery.com/jQuery.each/
sumber
Jika Anda menggunakan Lodash , Anda dapat menggunakan
_.forEach
sumber
Dalam beberapa tahun terakhir sejak pertanyaan ini dibuat, Javascript telah menambahkan beberapa fitur baru. Salah satunya adalah metode Object.Entries .
Disalin langsung dari MDN adalah cuplikan kode tindak
sumber
ya, Anda dapat memiliki array asosiatif juga di javascript:
sumber
sumber